Hiberate-Probleme, jdbc IDENTITY_INSERT ist auf OFF gesetzt

8

Ich bekomme einen JDBC-Fehler, wenn ich einen Commit durch den Ruhezustand an SQL Server

versuche
  

Kann keinen expliziten Wert für die Identitätsspalte in der Tabelle 'Report' einfügen, wenn IDENTITY_INSERT auf OFF gesetzt ist

Ich verwende Mappings, die von Netbeans erzeugt werden, die

enthalten %Vor%

Was mir so aussieht als müsste es sein das die Identität korrekt eingefügt wird.

Irgendeine Idee, wie Sie das beheben können?

BEARBEITEN:
Einige Links zur Dokumentation, für die Nachwelt,
Ссылка
Ссылка

    
James McMahon 16.01.2009, 22:08
quelle

5 Antworten

8

Sie können nicht in eine Identitätsspalte in SQL Server einfügen, wenn "IDENTITY_INSERT" nicht auf "ON" gesetzt ist. Da Ihre Generatorklasse "zugewiesen" ist, geht Hibernate davon aus, dass Sie vor dem Speichern des Objekts einen expliziten Wert für "id" in Java festlegen und dass Hibernate den Wert direkt in die Datenbank einfügen kann. Sie müssen entweder:

  1. Wählen Sie eine andere Generatorklasse wie "native"
  2. Setzen Sie IDENTITY_INSERT auf "ON"
cliff.meyers 17.01.2009, 05:39
quelle
1

Hier ist etwas, das für mich funktioniert hat. Bei Bedarf anpassen.

%Vor%

In meinem Fall hatte die SQL Server-Tabelle denselben Namen wie die Entity-Klasse. Für Sie ist das wahrscheinlich nicht wahr. Eine Lösung wäre also, den Tabellennamen als Parameter zu fragen.

    
acdcjunior 04.04.2013 14:20
quelle
1

Ändern Sie den Typ der Generatorklasse

VOR

%Vor%

NACH

%Vor%

Jetzt wird das funktionieren!

    
lucy 10.04.2013 09:42
quelle
1

versuche den Typ der Generator Klasse von 'zugewiesen' in 'Identität' zu ändern, es funktionierte für mich

    
lila 02.10.2013 15:58
quelle
1

Es wäre am besten, Wrapper-Klassen wie Integer anstelle von primitivem int. zu verwenden.

Nehmen Sie Ihren Code als Beispiel

%Vor%     
nikosstais 12.07.2012 20:45
quelle

Tags und Links