2016-03-02 94 views
0

我们最近将Hibernate版本从3.1升级到4.3.1,以供我们的应用程序使用。我面临一个奇怪的问题,错误和同一个对象总是与结果对象关联。包含相同对象的Hibernate条件返回列表

我有一个ClinicalStudyEvent类,其中包含EventFormContext类的集合。当我尝试使用HQL基于eventId获取ClinicalStudyEvent时,hibernate将EventFormContext的同一对象与结果对象关联起来。每个eventid都有相同的集合对象。

ClinicalStudyEvent

public class ClinicalStudyEvent implements 
     Comparable<ClinicalStudyEvent> 
{ 
..... 
private Set<EventFormContext> eventFormContexts = new LinkedHashSet<EventFormContext>(); 
...... 
} 

EventFormContext:

public class EventFormContext extends CSFormContext 
{ 
.... 
private ClinicalStudyEvent clinicalStudyEvent; 
.... 
} 

的Hibernate映射:

ClinicalStudyEvent

 <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> 

对于我们正在EventFormContext类的同一对象的每ClinicalStudyEvent类。

我也通过更改show_sql参数来检查sql,该参数也是正确的。 我检查了数据库,所有三个类的表都有主键。

任何指针都会有帮助。

+0

你可以发布你用来获取数据的HQL吗? – Pras

回答