我正在尝试使用@embeddable执行复合键查询。
这是我到目前为止所拥有的。
@Embeddable
public class IfasvVendorPK implements Serializable{
@Column(length = 4, nullable = false)
protected String peId;
@Column(length = 8, nullable = false)
protected String peAddrCd;
实体
@Entity
public class IfasvVendor implements Serializable {
@EmbeddedId
private IfasvVendorPK ifasvVendorPK;
查询
列表包含两个pks。不确定我是否应该使用列表。
Query query = session.createQuery("from IfasvVendor t0 where t0.ifasvVendorPK.peId=:id");
query.setParameter("id", list);
query.list();
一旦我的查询工作,我也不确定如何获取对象。
答案 0 :(得分:2)
我相信以下内容应该有效:
Query query = session.createQuery("from IfasvVendor t0 where t0.ifasvVendorPK.peId in (:id)");
query.setParameterList("id", list);
query.list();
您必须将命名参数括在查询中的括号中,并使用setParameterList。请参阅setParameterList here的javadoc。
查询结果将在以下列表中返回:query.list()
。这将返回一个未经检查的列表,您可能希望将其转换为List<IfasvVendor>
。
顺便说一句。这不是复合键查询。看@Perception评论......