Für meine JPA-Entitäten beschrifte ich immer alles mit @Table
und @Column
Ich möchte nicht Hibernate raten, was der Name einer Tabelle oder Spalte sein sollte. Ich möchte, dass Hibernate den Inhalt meines Codes verwendet.Warum beachtet Hibernate 5 meinen @Column-Namen nicht?
hatte ich eine Einheit mit der folgenden Feldzuordnung
@Column(name = "isPrimary")
private Boolean isPrimary;
Mit Hibernate 4.x erzeugt SQL-Abfragen jedoch die Spaltennamen als isprimary
würde Liste, wenn ich meine app SpringBoot 1.4 von einem traditionellen .war zu verwenden, aufgerüstet ohne SpringBoot. Hibernate 5 in den Abfragen mit is_primary
als die Spaltennamen gestartet, die es erzeugt, die eine Ausnahme verursacht, weil der Datenbankspalt is_primary
isprimary
nicht
Ich änderte meine @Column(name = "isPrimary")
zu @Column(name = "isprimary")
genannt wird und Hibernate 5 ging zurück richtig auf die Spaltennamen zu erzeugen.
Mein Verständnis von JPA ist, dass, wenn Sie @Column
setzen, dann der JPA-Provider das respektieren sollte und nicht mit dem Namen in der Anmerkung zu tun haben.
- Ist mein Verständnis von JPA korrekt?
- Warum ändert Hibernate den Namen?
Kontrollstrategie zu benennen, diese Schnittstelle ist in der Regel die Lösung für solche Probleme –
Ihr Verständnis der JPA-Spezifikation korrekt ist. Wenn Hibernate sich mit dem Namen herumschlägt, selbst wenn Sie ihn angegeben haben, hat Hibernate ein "Problem" –