2012-02-23 106 views
1

目的地和DestinationAlias在數據庫級的樣子是這樣的:如何在這種情況下爲hibernate定義唯一約束?

DestinationAlias and Destination

在DestinationAlias,(idDestination,化名)是獨一無二的。

POJO的DestinationAlias:

@Entity 
@Table(name = "DESTINATIONALIAS", 
uniqueConstraints = { @UniqueConstraint(columnNames={"IDDESTINATION", "ALIAS"}) } 
     ) 
public final class DestinationAlias { 

// .. 

    @ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL}) 
    @JoinColumn(name="IDDESTINATION", nullable=false) 
    public Destination getMainCity() { 
     return mainCity; 
    } 
} 

應的唯一約束是IDDESTINATION或 「MAINCITY」?

回答

2

唯一約束註釋需要一個列名稱列表。所以在你的情況下,不,它不應該是'MAINCITY'。還要注意這是將實際數據庫字段用作相同大小寫的最佳做法,因爲某些數據庫區分大小寫。所以,你的代碼應該是:

@Entity 
@Table(name = "DestinationAlias", uniqueConstraints = { @UniqueConstraint(columnNames = { 
     "idDestination", "alias" }) }) 
public final class DestinationAlias { 
    // .... 
} 

參見:http://docs.oracle.com/javaee/6/api/javax/persistence/UniqueConstraint.html