2012-11-12 13 views
0

假設我有2個JPA實體:如何使用Hibernate爲我的JPA實體設置唯一性級別?

@Entity 
public class OwnerEntity { 

    private List<OwnedEntity> subEntities 

    // ... 
} 

@Entity 
public class OwnedEntity { 

    private String quasiUniqueSid; 

    private OwnerEntity ownerEntity 

    // ... 
} 

正如你可以看到他們有一個多對一的關係:一個OwnerEntity可以有很多OwnedEntity秒。

我想實現的是根據它的所有者爲每個OwnedEntity分配一個唯一的sid。因此,我可以有例如2個擁有相同quasiUniqueSid的實體,但他們不能擁有相同的所有者。 Hibernate有這種問題的一些內置功能嗎?我可以記住其他ORM(不是Java相關的),這可以做到這一點,因此我的問題。我使用的是最新版本的Hibernate(4.1.8)

回答

0

看來你需要一個複合鍵,這樣的:

@Entity 
@Table([email protected](columnNames={"quasiUniqueSid","ownerEntity_id"}), name="myUniqueConstraint") 
public class OwnedEntity { 
    ... 
    String quasiUniqueSid; 
    @ManyToOne 
    OwnerEntity ownerEntity; 
    ... 
} 

的完整文檔,你可以找到here

,如果你想明確定義ownerEntity列名,你可以使用:

@JoinColumn(name="ownerEntity_id") 
相關問題