#hibernate #hibernate-mapping
#переход в режим гибернации #отображение гибернации
Вопрос:
Я пробую свои силы с типом пользователя Hibernate и столкнулся с некоторой проблемой. вот мой файл сопоставления
<hibernate-mapping>
<class name="MyClass"
table="MYTABLE">
<id name="uuid" type="java.lang.String">
<column name="UUID" />
<generator class="uuid" />
</id>
<property name="myClass_UserType" type="MyClassUserType" >
<column name="A"/>
<column name="B"/>
<column name="C"/>
</property>
</class>
</hibernate-mapping>
и вот код из моего CompositeUserType
@Override
public void nullSafeSet(PreparedStatement ps, Object arg1, int index,
SessionImplementor arg3) throws HibernateException, SQLException {
if(arg1==null){
//todo
}
else{
MyClass_UserType mc=(MyClass_UserType)arg1;
mc=dao.save(mc);
ps.setString(index, mc.getXYZ());
ps.setString(index 1, mc.getXYZ());
ps.setString(index 2, mc.getXYZ());
ps.setString(index 3, mc.getXYZ());
}
}
я хочу получить доступ к экземпляру MyClass внутри метода nullSafeSet (…).
у меня есть доступ к MyClass_UserType в этом методе, но каким-то образом не удается получить экземпляр MyClass.
Есть ли какой-либо способ получить ссылку / доступ к этому экземпляру MyClass
Заранее спасибо
Комментарии:
1. В чем разница между «MyClassuserType» (из сопоставления), «MyClass_UserType» (из кода) и «my CompositeUserType» (из текста)?
2. @ Stefan Steinegger: я думаю, что я написал три слова для одного и того же MyClass_UserType / MyClassUserType, а третье — CompositeUserType, который я создал для обработки случая
Ответ №1:
Вы определяете MyClass в своем рабочем пакете, поскольку в файле сопоставления указано, что вы сопоставили таблицу MYTABLE с MyClass, но на самом деле определяете его, если это так, то я уверен, что экземпляр MyClass доступен внутри любого класса в том же пакете или где-то еще через импорт, поэтому, пожалуйста, проверьте его в своем MyClass.
Комментарии:
1. Это довольно длинное предложение.
2. И мог бы также использовать словарь