Tengo una tabla MySQL para contener etiquetas (es decir, como las utilizadas aquí en Desbordamiento de pila). Simplemente tiene una identificación (pk) y una columna de etiqueta para contener la etiqueta.Hibernate: restricción de columna única que se ignora
Los métodos de obtención anotados para mi entidad Tag se muestran a continuación.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public int getId() {
return this.id;
}
@Column(name = "tag", unique = true, nullable = false)
public String getTag() {
return this.tag;
}
Estoy utilizando una restricción de columna única en la etiqueta ya que nunca debe haber más de una fila para una etiqueta determinada. Sin embargo, Hibernate parece estar ignorando esto, es decir, puedo guardar la misma etiqueta muchas veces y simplemente crea una nueva fila en lugar de lanzar una excepción.
¿Me está faltando algo o debería estar funcionando?
Gracias por la respuesta. Por cierto, ¿no es ridículo? – zakmck
No, no lo es. La base de datos valida que la entidad sea única de manera realmente rápida. Un ORM no puede ser tan rápido. Es por eso que esto tiene sentido. –
Quiero decir, ¿no es ridículo que use esa anotación y no cree una restricción única correspondiente en la base de datos? Así es como inicialmente entendí que se comporta, aunque hice un par de experimentos y parece que no refleja 'único = verdadero' en el esquema solo cuando uso ciertas bases de datos, como HSQL, el mismo código genera una restricción MySQL cuando Cambio la configuración de DB. – zakmck