2014-01-10 45 views
1

如何獲取定義了多個@Id屬性的域對象?查找具有多個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

不,你不能,'@ id'註釋字段是一個表的主鍵。在一個表中不能有重複的主鍵。但你可以嘗試設置一個包含兩個域的主域!但我認爲在JPA中,他們設計這個有一個領域。你可以試試它,如果你想 – Rugal

回答

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); 
+0

'IdClass'有'EmbeddedId'嗎?反之亦然? – membersound

相關問題