Добро пожаловать,Hibernate - один-ко-многим
Я использую свойство-исх связать этот внешний ключ с какой-либо другой колонке моего класса, а не первичный ключ. столбец, отличный от первичного ключа, не является уникальным. Теперь, когда я пытаюсь принести эту коллекцию я получаю исключение:
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;
}
Mapping:
<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();
}
Все работы, когда у меня есть differant значение для иностранца ключа, Exemple:
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
Но когда у меня есть такое же значение для иностранца Key (Exemple со значением 79 на T_GI_ALARM):
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
Я действительно не понимаю, что происходит, я думаю, это потому, что у нас нет объектов с уникальным идентификатором. ?!?