0
欢迎,休眠 - 一对多
我正在使用property-ref将这个外键与我的类的一些其他列而不是主键相关联。主键以外的列不是唯一的。现在,当我试图获取此集合我得到异常:
org.hibernate.HibernateException: collection is not associated with any session
数据库:
T_GI_ALARM
-ALARM_ID (PK)
-METHOD_PARAM_NR (FK)
T_QC_METHOD_IN
-METHOD_IN_ID (PK)
-METHOD_PARAM_NR
结构:
public class Alarm implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Set <QCMethodIN> methodINList = new HashSet <QCMethodIN>(0);
}
public class QCMethodIN implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer methodNr;
}
映射:
<hibernate-mapping>
<class name="gestint.data.model.Alarm"
table="DWH1.T_GI_ALARM">
<id name="id" type="java.lang.Integer">
<column name="ALARM_ID" />
<generator class="assigned" />
</id>
<property name="qcMethode" type="java.lang.Integer">
<column name="METHOD_PARAM_NR" not-null="true" />
</property>
<set name="methodINList" table="DWH1.T_QC_METHOD_IN" inverse="true" lazy="false" fetch="select">
<key property-ref="qcMethode">
<column name="METHOD_PARAM_NR" not-null="false" />
</key>
<one-to-many class="gestint.data.model.QCMethodIN" />
</set>
</hibernate-mapping>
<hibernate-mapping>
<class name="gestint.data.model.QCMethodIN"
table="DWH1.T_QC_METHOD_IN">
<id name="id" type="java.lang.Integer">
<column name="METHOD_IN_ID" />
<generator class="assigned" />
</id>
<property name="methodNr" type="java.lang.Integer">
<column name="METHOD_PARAM_NR" not-null="true" />
</property>
</class>
</hibernate-mapping>
我加载数据形式休眠(会话由弹簧设定)是这样的:
public List<Alarm> listAll() {
return this.sessionFactory.getCurrentSession().createQuery("from Alarm").list();
}
一切工作的时候我对外国人关键一歧价值为例:
T_GI_ALARM
ID METHOD_PARAM_NR
10021 79
10022 80
10020 91
T_QC_METHOD_IN
METHOD_IN_ID METHOD_PARAM_NR
1 79
2 80
3 91
但是,当一个我对外国人密钥的相同的值(与为例对T_GI_ALARM值79):
T_GI_ALARM
ID METHOD_PARAM_NR
10021 79 <--!!
10022 80
10020 79 <--!!
T_QC_METHOD_IN
METHOD_IN_ID METHOD_PARAM_NR
1 79 <--is call 2 times
2 80
3 91
我得到这个错误:
org.hibernate.HibernateException: collection is not associated with any session
我真的不明白发生了什么,我想是因为我们没有具有唯一ID的对象。 ?!?