我有这个.hbm.xml文件:
Evenement.hbm.xml :
<hibernate-mapping package="com.af.evenement">
<class name="Evenement" table="TB_EVENEMENT">
<id name="id" type="string" column="CODE_EVENEMENT">
<generator class="assigned" />
</id>
<set name="causesAnnexes">
<key column="CODE_EVENEMENT" />
<one-to-many class="CausesAnnexesEvt" />
</set>
........
我得到了另一个.hbm.xml文件:CausesAnnexesEvt:
<class name="CausesAnnexesEvt" table="TB_CAUSESANNEXES_EVT">
<composite-id name="id" class="CausesAnnexesEvtPK">
<key-many-to-one
class="Evenement"
column="CODE_EVENEMENT"
name="Evenement"
/>
<key-many-to-one
class="Cause"
column="CODE_CAUSE"
name=cause"
/>
</composite-id>
</class>
当我尝试使用以下代码行删除Evenement对象时:
Session s=getCurrentSession();
tx=s.beginTransaction();
s.delete(evenement);
s.flush();
s.clear();
当我运行上面的代码时,我得到以下异常:
QueryException : could not resolve property : causesAnnexesEvt.
答案 0 :(得分:0)
Hibernate在您的班级causesAnnexesEvt
中查找名为Evenement
的字段,但找不到它。确保类中的字段和hbm.xml中的列定义使用相同的名称。
答案 1 :(得分:0)
session.delete()不会抛出显示的异常。要么你没有向我们展示完整的代码(堆栈跟踪会有帮助,顺便说一句)或者它是在会话工厂初始化期间抛出的(从getCurrentSession()
内部调用?)因为你的一个命名查询无法解析。 / p>
因此,虽然Aaron认为缺少causesAnnexesEvt
属性是导致此异常的原因,但您的帖子中绝对没有任何内容暗示它应该是Evenement
的属性。搜索causesAnnexesEvt
的所有命名查询,并查看哪一个引用它以及它想要从哪个实体获取它。