2010-08-04 15 views
70

¿Existe alguna manera de especificar el uso de JPA que debe haber múltiples restricciones únicas en diferentes conjuntos de columnas?Múltiples restricciones exclusivas en 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; 
} 

he visto una anotación específica de hibernación pero estoy tratando de evitar las soluciones específicas del vendedor ya que todavía estamos decidiendo entre Hibernate y DataNucleus.

+7

+1 para tratar de evitar anotaciones específicas del fabricante – corydoras

Respuesta

112

El atributo @TableuniqueConstraints realmente acepta una matriz de estos. Su ejemplo es solo una abreviatura de una matriz con un solo elemento. Otherewise que se vería así:

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

Siempre que la restricción única se basa sólo en un campo, puede utilizar @Column(unique=true) en esa columna.

+1

Actualmente tengo esta anotación, pero parece que Hibernate no está generando el índice para la tabla, si la tabla ya existe (y está configurada para actualizar) o si elimino la tabla y deje que Hibernate lo genere automáticamente. ¿Me estoy perdiendo de algo? –

Cuestiones relacionadas