使外键在JPA中是唯一的

pus*_*rix 3 jpa

是否可以在表中创建唯一的外键?假设我有实体A和B.

A:

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

@OneToOne
private B b;
}
Run Code Online (Sandbox Code Playgroud)

B:

@Entity
class B extends Serializable {
@Id
private long id;
}
Run Code Online (Sandbox Code Playgroud)

我想这样做,A可以有一个B,除了没有其他A有相同的B.例如:a1有b1,a2有b2 ...在这种情况下,a3不能有b1或b2 B必须是独一无二的.

有没有办法实现这个目标?我希望能够将@Column(unique = true)注释放在@OneToOne之上,但这似乎不可能.

Lev*_*lló 5

@JoinColumn不起作用.

你需要使用这样的东西:

@Table(name="B",  uniqueConstraints={
   @UniqueConstraint(columnNames={"b_id"})
})
Run Code Online (Sandbox Code Playgroud)

其中"b_id"是外键约束的名称.