Hibernateを使用してDB_TABLEの句クエリでSQLを実行する必要があります。in句には、値のペアが含まれています。以下を参照してください。コンポーネントマッピングの助けを借りて、(tid、mid)ペアをクエリするように機能しました。
次に、別のペアの例(tid、組織)に対して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>