Ich habe eine MySQL-Tabelle, die Tags enthält (also wie die hier auf Stack Overflow verwendeten). Es hat einfach eine ID (PK) und eine Tag-Spalte, um das Tag selbst zu halten.Hibernate - Eindeutige Spaltenbeschränkung wird ignoriert
Die kommentierten get-Methoden für meine Tag-Entität sind unten aufgeführt.
@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;
}
ich eine eindeutige Spalte Einschränkung für Tag verwenden, da es nie mehr als eine Zeile für einen bestimmten Tag sein sollte. Hibernate scheint dies jedoch zu ignorieren, d. H. Ich kann das gleiche Tag mehrmals speichern und erstellt einfach eine neue Zeile, anstatt eine Ausnahme auszulösen.
Fehle ich etwas oder sollte das funktionieren?
Vielen Dank für die Antwort. Übrigens, ist das nicht lächerlich ?! – zakmck
Nein, ist es nicht. Die Datenbank validiert diese Entität wirklich sehr schnell. Ein ORM kann nicht so schnell sein. Deshalb hat das Sinn. –
Ich meine, ist nicht lächerlich, dass ich diese Annotation verwende und es nicht eine entsprechende eindeutige Einschränkung in der DB erstellt? So habe ich es anfangs verstanden, obwohl ich ein paar Experimente gemacht habe und es scheint, dass es nicht 'eindeutig = wahr' zum Schema widerspiegelt, nur wenn ich bestimmte Datenbanken benutze, wie HSQL, erzeugt der gleiche Code eine MySQL-Einschränkung wenn Ich wechsle DB-Konfiguration. – zakmck