2009-11-14 71 views
3

是否可以在表中使外鍵唯一? 假設我有實體A和B.使外鍵在JPA中獨一無二

答:

@Entity 
class A extends Serializable { 
@Id 
private long id; 

@OneToOne 
private B b; 
} 

B:

@Entity 
class B extends Serializable { 
@Id 
private long id; 
} 

我希望把它使得A可以有一個B,除了不能有任何其他A具有相同的B.例如:a1具有b1,並且a2具有b2 ...在這種情況下,a3不能具有b1或b2,因爲B必須是唯一的。

有沒有辦法做到這一點?我希望能夠將@Column(unique = true)註釋放在@OneToOne之上,但這似乎不可能。

回答

0

爲了確保您可以添加:

@OneToOne
@JoinColumn(name = 「COLUMN_NAME」,獨特= TRUE)

+0

出於某種原因,當我這樣做時,沒有表「A」被創建。我只是得到了表B ......被生成......很奇怪。 – pushmatrix 2009-11-14 17:12:31

5

@JoinColumn不起作用。

您需要使用這樣的事情:

@Table(name="B", uniqueConstraints={ 
    @UniqueConstraint(columnNames={"b_id"}) 
}) 

其中「B_ID」是指外鍵約束的名稱。