Множество уникальных ограничений в JPA
Есть ли способ указать JPA, что должно быть несколько уникальных ограничений для разных наборов столбцов?
@Entity
@Table(name="person",
[email protected](columnNames={"code", "uid"}))
public class Person {
// Unique on code and uid
public String code;
public String uid;
// Unique on username
public String username;
public String name;
public String email;
}
Я видел аннотацию спящего режима, но я стараюсь избегать конкретных решений для поставщиков, поскольку мы все еще решаем между спящим и datanucleus.
Ответы
Ответ 1
Атрибут @Table
uniqueConstraints
фактически принимает массив из них. Ваш пример - это всего лишь сокращение для массива с одним элементом. В противном случае это выглядело бы так:
@Table(name="person", uniqueConstraints={
@UniqueConstraint(columnNames={"code", "uid"}),
@UniqueConstraint(columnNames={"anotherField", "uid"})
})
Всякий раз, когда уникальное ограничение основывается только на одном поле, вы можете использовать @Column(unique=true)
в этом столбце.