Hibernate Custom SQL

sirproof

Grünschnabel
Hallo liebe Tutorials-Gemeinde,

Ich hier habe häufig Antworten auf meine Fragen bekommen, auch wenn ich sie nie gestellt habe, doch nun stehe ich vor folgendem Problem:

Wir wollen DML-Skripte auf die Datenbank mittels stored procedures durchführen. Hibernate bietet dafür die Möglichkeit mittels @SQLInsert, -update, -delete eigene PreparedStatements zu definieren, welche von Hibernate für die entsprechende Anfrage genutzt werden. So habe ich jetzt diese Klasse:

Code:
@Entity
@Table(name = "DOCUMENT_TYPE")
@SQLInsert(sql = "call change_document_type(:name, 'I');",
		callable=false, check=ResultCheckStyle.NONE)
public class DocumentType {...}

Das Problem ist allerdings, dass die Id von der Prozedur erzeugt wird und nicht mitgegeben werden soll. Wenn nun die Id aber nicht in dem Prepared Statement vorkommt, bekomme ich einen

Code:
Caused by: java.sql.SQLException: Ungültiger Spaltenindex

Weil Hibernate die Id in das Statement einfügen will, aber keinen Platzhalter dafür findet.

Die Definition

Code:
@Column(name = "ID",  insertable=false, updatable=false)

nützt dabei leider auch nur bei Nicht-Schlüsselwerten, sodass sie übersprungen werden.

Kennt jemand dieses Phänomen und kann mir aus der Patsche helfen?

Danke und Gruß
Peter
 

Neue Beiträge