Несколько уникальных ограничений в JPA


есть ли способ указать с помощью JPA, что должно быть несколько уникальных ограничений для разных наборов столбцов?

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(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;
}

Я видел специальную аннотацию hibernate, но я пытаюсь избежать конкретных решений поставщика, поскольку мы все еще решаем между hibernate и datanucleus.

1 72

1 ответ:

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

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

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