Создание внешних ключей уникальными в JPA - PullRequest
3 голосов
/ 14 ноября 2009

Можно ли сделать внешний ключ уникальным внутри таблицы? Предположим, у меня есть объекты A и B.

A:

@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, но это не представляется возможным.

Ответы [ 2 ]

5 голосов
/ 23 ноября 2012

@ JoinColumn не работает.

Вам нужно использовать что-то вроде этого:

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

где "b_id" - имя ограничения внешнего ключа.

0 голосов
/ 14 ноября 2009

Конечно, вы можете добавить:

@Один к одному
@JoinColumn (name = "COLUMN_NAME", unique = true)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...