查找具有多个ID属性的域对象?

时间:2014-01-10 10:19:34

标签: java hibernate

如何获取定义了多个@Id属性的域对象?

class Test {
    @Id
    private String first;

    @Id
    private String second;
}

//how can I pass multiple IDs to find with entitymanger?
em.find(Test.class, id);

1 个答案:

答案 0 :(得分:3)

您需要使用@IdClass@EmbeddedId注释来映射复合主键(有关详细信息,请参阅here)。 然后将复合类的实例传递给find方法。

所以基本上你的例子就是这样的:

@Entity
@IdClass(TestPK.class)
public class Test {

@Id
private String first;
@Id
private String second;

}

TestPk {

private String first;
private String second;

}

em.find(Test.class, testPKInstance);