我有一个表(比如表A),它与一对表(表B和C)有一对多的休眠关系,“lazy”属性设置为false;当我在做hiberateTemplate.load时,它会从三个表中获取数据(表a)。我的情况是我需要连接其中一个子表(表B)并在表B中查找特定的字段值,并从表B中的匹配字段值获取所有A,B,C的记录(表B)具体领域)。
表A(事件)
<set name="eventKeyIdentifiers" table="EventKeyIdentifier"
inverse="true" lazy="false" fetch="select">
<key>
<column name="eventId" not-null="true" />
</key>
<one-to-many class="event.EventKeyIdentifiers" />
</set>
<set name="eventStatuses" table="EventStatus"
inverse="true" lazy="false" fetch="select" order-by="effectiveDate DESC">
<key>
<column name="eventId" not-null="true" />
</key>
<one-to-many class="event.EventStatuses" />
</set>
表B(事件状态)
<many-to-one name="event" class="event.Event" update="false" insert="false" fetch="select">
<column name="eventId" length="36" not-null="true" />
</many-to-one>
<property name="statusCode" type="string">
<column name="statusCode" length="100" not-null="true" />
</property>
表A(事件)需要加载特定的“statusCode”(表B)
有什么建议吗?
答案 0 :(得分:1)
DetchedCriteria帮忙!
DetachedCriteria criteria = DetachedCriteria.forClass(Event.class)
.addOrder(Order.desc("eventProcessedDate"))
.createAlias("eventStatuses", "evtStats")
.add(Restrictions.naturalId()
.set("evtStats.statusCode", status));