2
我需要在DB_TABLE的子句查询中使用hibernate执行SQL。 in子句包含值对。我使用组件映射的帮助来查询(tid,mid)对,如下所示。Hibernate高级条款
我现在需要为另一对示例(tid,organization)额外执行in子句查询。我该怎么做呢?
目标SQL查询
select * from DB_TABLE where (c_tid, c_mid) in (('t1', 'm1'), etc.)
Java的查询代码
function List<DBTable> getDBTableList(List<TidMidId> tidMidList) {
Criterion crit = Restrictions.in("tidMidId", tidMidList.toArray());
// pom is hibernate wrapper
return pom.getObjects(DBTable.class, crit);
}
Hibernate映射:
<class name="com.DBTable" table="DB_TABLE" >
<id name="id" type="long" column="K_ID">
<generator class="sequence">
<param name="sequence">DB_TABLE$SEQ</param>
</generator>
</id>
<component name="tidMidId" class="com.TidMidId">
<property name="tid" type="string" column="C_TID"/>
<property name="mid" type="string" column="C_MID"/>
</component>
<property name="organisation" type="string" column="C_ORGANISATION"/>
<property name="createTimestamp" type="timestamp" column="D_CREATE_TIMESTAMP"/>
<property name="modTimestamp" type="timestamp" column="D_MOD_TIMESTAMP"/>
</class>
伟大的答案,但同时遵循相同的形式给出了Hibernate是生成4内部2.可以请参阅此连接,而不是题。 http://stackoverflow.com/questions/30613881/hibernate-query-gnerating-4-inner-join-where-i-specified-only-2-join-in-query – anirban