2012-08-14 38 views
23

Estoy utilizando SEAM 2/Hibernate junto con la base de datos PostgreSQL 9. Tengo la siguiente tablaRestricción única sobre varias columnas

Active Band 
=========== 
active_band_id serial 
active_band_user text 
active_band_date timestamp 
active_band_process integer 

Me gustaría añadir una restricción que asegura cada nueva entrada tiene una combinación única de active_band_user y active_band_date.

Podría haber muchos intentos de insertos por segundo, así que necesito que esto sea lo más eficiente posible, ¿hay alguna anotación SEAM/hibernación que pueda usar en el mapeo de entidades?

Gracias de antemano

+0

Esto parece duplicar http://stackoverflow.com/questions/3211972/specifying-restrictions-unique-together-in -hibernate –

Respuesta

52

No hay anotación de Hibernate que comprueba singularidad antes de insertar/actualizar. Pero hay anotación que generará una restricción a dicha base de datos si se utiliza la base de datos de creación automática:

@Table(
    name="ACTIVE_BAND", 
    uniqueConstraints= 
     @UniqueConstraint(columnNames={"active_band_user", "active_band_date"}) 
) 
+0

No creo que sea compatible con esto, ya que obtengo 'El valor para el atributo de anotación Table.uniqueConstraints debe ser algo de @javax.persistence.UniqueConstraint annotation' en Eclipse. ¿Este método genera la restricción en el esquema de SQL? – DaveB

+0

Sí, sí admite. Está documentado aquí: http://docs.oracle.com/javaee/6/api/javax/persistence/Table.html#uniqueConstraints%28%29 Algo más debe estar mal. ¿Se ha importado javax.persistence.UniqueConstraint? –

+12

Sé que esto fue hace años, pero asegúrese de estar usando 'javax.persistence.Table' no' org.hibernate.annotations.Table'. '@ Table' de Hibernate no tiene un campo' uniqueConstraints'. – Patrick

Cuestiones relacionadas