2016-04-25 3 views
0

Ich konnte hier und bei Google keine Antwort finden.Hibernate + H2 nicht aktualisieren ja_no type Spalte

Mein Problem ist folgendes:
Ich habe ein Unternehmen mit einer yes_no Typ Spalte

public class MyEntity { 

    @Column(name = "IS_DELETED") 
    @Type(type = "yes_no") 
    private Boolean itemDeleted = Boolean.FALSE; 
} 

In Datenbank, die Spalte ein CHAR (1)

IS_DELETED CHAR(1) CHECK ("IS_DELETED" IN ('Y', 'N')) 

Der folgende Code darstellen ein Problem in H2 mit meinen JUnit-Tests (es läuft gut mit Oracle, wenn die Anwendung ausgeführt wird):

myEntityRepositoryService.save(myEntity); 

Alle Spalten nicht yes_no Typ sind korrekt aktualisiert. Ich habe einige Hibernate-Logs aktiviert, um zu überprüfen, ob das Commit passiert ist, ob die Transaktion veröffentlicht wurde, ... Alles ist in Ordnung. Alle Spalten sind gut aktualisiert , aber nicht die yes_no Spalte.

Ich habe versucht, einige zufällige Werte in anderen Feldern (wie Zufallszahl) im Code kurz vor dem Speichern zu setzen. Es funktioniert, die Werte werden gespeichert, aber nicht die boolesche Spalte.

Beachten Sie, dass die Repository-Service org.springframework.data.jpa.repository.JpaRepository

erstreckt Gibt es ein bekanntes Problem mit dem Hibernate YesNoType? Mache ich etwas falsch? H2 braucht eine spezielle Konfiguration?

+0

Haben Sie die Antwort darauf gefunden? Ich habe ein ähnliches Problem mit H2 und Grails, Umzug in die Produktion. Funktioniert problemlos im Speicher, wenn die Datenbank neu erstellt wird. In der Produktion wird sie jedoch aktualisiert. – John

Antwort

0

Das Problem ist nicht H2. Stattdessen nutzt Ihr JpaRepository wahrscheinlich nicht Hibernate. Bitte stellen Sie sicher, dass es die Hibernate EntityManager anstelle einer anderen Implementierung (z. B. EclipseLink) verwendet.

+0

Ich verwende bereits den Hibernate Entity Manager. Ich bin mir nicht einmal sicher, ob es sonst mit Oracle funktionieren würde. Aber danke für deine Antwort :) – Mannekenpix

+0

Als einen schnellen Test, kannst du stattdessen den '@Type (type =" yes_no ")' entfernen, itemDeleted von 'Boolean' in' String' ändern, und dann auf "Y" oder setzen "N", um zu sehen, ob diese Updates bestehen bleiben? Stellen Sie außerdem sicher, dass keine anderen Spalten den Namen "IS_DELETED" tragen, da dies zu einigen Problemen führen würde. –

+0

Die String-Felder sind korrekt beibehalten, nur das Boolean YesNoType hat ein Problem. – Mannekenpix