给出以下HQL查询:
但是我在Id中有复合键,我们有两个PK1和pk2作为Id。
我们如何实现此查询..
如何在查询
的setparameters函数中传递两个参数我的问题类似于question
包含复合键的HBM文件位于
下方<?xml version="1.0"?>
<composite-id>
<key-property name="foo1" column="FOO1" type="java.lang.String" length="36"/>
<key-property name="foo2" column="FOO2" type="java.lang.Short" />
</composite-id>
<property name="EffectiveDt" type="java.sql.Date" column="EFFECTIVE_DT" />
<property name="effectiveTypeCd" type="java.lang.String" column="CERT_EFF_TYPE_CD" />
<property name="statusCd" type="java.lang.String" column="CERT_STATUS_CD" />
</class>
答案 0 :(得分:1)
您使用的是复合ID吗?您是否有一个表示复合ID的单独类,或者您在Foo中有2个字段,并且您想在查询中使用它们进行搜索? 发帖给你Foo课会有所帮助!
答案 1 :(得分:0)
我并非100%确定在这种情况下您可以使用in
。您可以做的一件事是使用
String hqlQuery = "from Foo foo where "
boolean first = true;
for( ID id : fooids ) {
if( first ) {
hqlQuery += "foo.id = ?";
first = false;
} else {
hqlQuery += " OR foo.id = ?";
}
}
Query q = em.createQuery(hqlQuery);
int position = 0;
for( ID id : fooids ) {
q.setParameter(position, id);
position++;
}
您可能需要仔细检查代码,因为我在这里写,所以很可能会有一两个错字。