Hibernate查询复合键

时间:2012-02-28 16:49:00

标签: java mysql hibernate postgresql

我正在尝试使用@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();

一旦我的查询工作,我也不确定如何获取对象。

1 个答案:

答案 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评论......