Подтвердить что ты не робот

Множество уникальных ограничений в 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.

4b9b3361

Ответ 1

Атрибут @Table uniqueConstraints фактически принимает массив из них. Ваш пример - это всего лишь сокращение для массива с одним элементом. В противном случае это выглядело бы так:

@Table(name="person",  uniqueConstraints={
   @UniqueConstraint(columnNames={"code", "uid"}),
   @UniqueConstraint(columnNames={"anotherField", "uid"})
})

Всякий раз, когда уникальное ограничение основывается только на одном поле, вы можете использовать @Column(unique=true) в этом столбце.