2016-11-14 6 views
0

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_primaryisprimary 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?
+0

Kontrollstrategie zu benennen, diese Schnittstelle ist in der Regel die Lösung für solche Probleme –

+0

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" –

Antwort

1

ab Frühlings-Boot 1.4, wegen des Schalters 5 hat die Namensgebung Hibernate Strategie SpringPhysicalNamingStrategy aktualisiert worden, die auf 1,3 Standardwerte ganz in der Nähe sein sollten.

SpringNamingStrategy wird nicht mehr verwendet, da Hibernate 5.1 die Unterstützung für die alte NamingStrategy-Schnittstelle entfernt hat. Eine neue SpringPhysicalNamingStrategy ist jetzt automatisch konfiguriert, die in Kombination mit Hibernate's Standard ImplicitNamingStrategy verwendet wird. Dies sollte den Spring Boot 1.3-Standardeinstellungen sehr nahe kommen (wenn nicht identisch). Sie sollten jedoch überprüfen, ob Ihr Datenbankschema beim Aktualisieren korrekt ist.

For More Details

Verwandte Themen