包含相同对象的 Hibernate 条件返回列表
Hibernate criteria returning list which contain same objects
我们最近将应用程序的休眠版本从 3.1 升级到 4.3.1。我遇到了一个奇怪的问题,错误的相同对象总是与结果对象相关联。
我有一个 class ClinicalStudyEvent,其中包含 EventFormContext Class 的集合。当我尝试使用 HQL 基于 eventId 获取 ClinicalStudyEvent 时,hibernate 将 EventFormContext 的相同对象与结果对象相关联。每个 eventid 的集合对象相同。
Classes
临床研究活动
public class ClinicalStudyEvent implements
Comparable<ClinicalStudyEvent>
{
.....
private Set<EventFormContext> eventFormContexts = new LinkedHashSet<EventFormContext>();
......
}
EventFormContext:
public class EventFormContext extends CSFormContext
{
....
private ClinicalStudyEvent clinicalStudyEvent;
....
}
Hibernate 映射:
临床研究活动
<set
name="eventFormContexts"
table="EVENT_FORM_CONTEXT"
lazy="false"
inverse="true"
cascade="all"
order-by="IDENTIFIER">
<key column="CLINICAL_STUDY_EVENT_ID"/>
<one-to-many class="edu.wustl.clinportal.domain.EventFormContext"/>
</set>
CSFormContext
<hibernate-mapping default-lazy="false">
<class
name="edu.wustl.clinportal.domain.CSFormContext"
table="CS_FORM_CONTEXT"
dynamic-update="false"
dynamic-insert="false">
............
<joined-subclass
name="edu.wustl.clinportal.domain.EventFormContext"
table="EVENT_FORM_CONTEXT" >
<key column="IDENTIFIER" />
......
<many-to-one
name="clinicalStudyEvent"
class="edu.wustl.clinportal.domain.ClinicalStudyEvent" cascade="none"
update="true" insert="true" column="CLINICAL_STUDY_EVENT_ID" />
</joined-subclass>
</class>
对于每个 ClinicalStudyEvent class,我们得到相同的 EventFormContext 对象 class。
我还通过更改 show_sql 参数检查了 sql,这也是正确的。
我检查了数据库,所有三个 classes 的表都有主键。
任何指点都会有所帮助。
类 并且此查询中使用的 hbm 在 https://forum.hibernate.org/viewtopic.php?f=1&t=1043003&start=0&hilit=ClinicalStudyEvent
处给出
看起来像是 hibernate4.3 中的错误,因为它没有添加加入子 类 的条件。我通过将 lazy 更改为 true 并在需要时显式获取对象来解决它。
我们最近将应用程序的休眠版本从 3.1 升级到 4.3.1。我遇到了一个奇怪的问题,错误的相同对象总是与结果对象相关联。
我有一个 class ClinicalStudyEvent,其中包含 EventFormContext Class 的集合。当我尝试使用 HQL 基于 eventId 获取 ClinicalStudyEvent 时,hibernate 将 EventFormContext 的相同对象与结果对象相关联。每个 eventid 的集合对象相同。
Classes
临床研究活动
public class ClinicalStudyEvent implements
Comparable<ClinicalStudyEvent>
{
.....
private Set<EventFormContext> eventFormContexts = new LinkedHashSet<EventFormContext>();
......
}
EventFormContext:
public class EventFormContext extends CSFormContext
{
....
private ClinicalStudyEvent clinicalStudyEvent;
....
}
Hibernate 映射:
临床研究活动
<set
name="eventFormContexts"
table="EVENT_FORM_CONTEXT"
lazy="false"
inverse="true"
cascade="all"
order-by="IDENTIFIER">
<key column="CLINICAL_STUDY_EVENT_ID"/>
<one-to-many class="edu.wustl.clinportal.domain.EventFormContext"/>
</set>
CSFormContext
<hibernate-mapping default-lazy="false">
<class
name="edu.wustl.clinportal.domain.CSFormContext"
table="CS_FORM_CONTEXT"
dynamic-update="false"
dynamic-insert="false">
............
<joined-subclass
name="edu.wustl.clinportal.domain.EventFormContext"
table="EVENT_FORM_CONTEXT" >
<key column="IDENTIFIER" />
......
<many-to-one
name="clinicalStudyEvent"
class="edu.wustl.clinportal.domain.ClinicalStudyEvent" cascade="none"
update="true" insert="true" column="CLINICAL_STUDY_EVENT_ID" />
</joined-subclass>
</class>
对于每个 ClinicalStudyEvent class,我们得到相同的 EventFormContext 对象 class。
我还通过更改 show_sql 参数检查了 sql,这也是正确的。 我检查了数据库,所有三个 classes 的表都有主键。
任何指点都会有所帮助。
类 并且此查询中使用的 hbm 在 https://forum.hibernate.org/viewtopic.php?f=1&t=1043003&start=0&hilit=ClinicalStudyEvent
处给出看起来像是 hibernate4.3 中的错误,因为它没有添加加入子 类 的条件。我通过将 lazy 更改为 true 并在需要时显式获取对象来解决它。