Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:java_hibernate

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
prog:java_hibernate [2013/04/11 10:25]
gpipperr [Ein Oracle Sequence für den Primary Key einer Tabelle in Hibernate definieren und verwenden]
prog:java_hibernate [2013/04/11 10:48] (aktuell)
gpipperr [Fehler]
Zeile 1: Zeile 1:
 +====== Ein Oracle Sequence für den Primary Key einer Tabelle in Hibernate definieren und verwenden ======
  
 +
 +Ziel:
 +
 +Für den Primary Key einer Tabelle soll das Sequence Objekt in der Oracle Datenbank verwendet werden.
 +
 +Getestet in Hibernate 4.2.0
 +
 +
 +=== Vorbereitung - Hibernate konfigurieren ===
 +
 +Setzen der  Hibernate Property "hibernate.jdbc.use_get_generated_keys"  
 +
 +<code java>
 +  <property name="hibernate.jdbc.use_get_generated_keys">true</property>
 +</code>
 +
 +
 +=== Hibernate GenericGenerator Annotations ===
 +
 +Mit  @GenericGenerator können diverse Strategien für das Erzeugen einer Schlüssels umgesetzt werden.
 +
 +siehe auch:
 +
 +
 +  * http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-identifier
 +  * http://www.galileocomputing.de/artikel/gp/artikelID-328
 +
 +
 +
 +<code java>
 +import org.hibernate.annotations.GenericGenerator;
 +import org.hibernate.annotations.Parameter;
 +import javax.persistence.GeneratedValue;
 +
 +@Entity
 +@Table(name = "EMP")
 +public class User {
 +
 +    @GenericGenerator(name = "OraSeqGenerator", strategy = "sequence-identity", parameters = @Parameter(name = "sequence", value = "EMP_ID_SEQ"))
 + 
 +    @Id
 +    @GeneratedValue(generator = "OraSeqGenerator")
 +    private int empno;
 +    
 +
 +// get and set 
 +
 +...
 +
 +}
 +    
 +</code>
 +
 +
 +==== Fehler ====
 +
 +Erhält man diesen Fehler, wurde zuvor die Hibernate Propertiy nicht gesetzt!
 +
 +<code java>
 +ERROR: HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): org.hibernate.AssertionFailure: getGeneratedKeys() support is not enabled
 +Exception in thread "main" org.hibernate.AssertionFailure: getGeneratedKeys() support is not enabled
 +</code>
 +
 +siehe auf http://www.javadocexamples.com/org/hibernate/org.hibernate.AssertionFailure.html den Abschnitt:
 +
 +<code java>
 +if ( useGetGeneratedKeys && !factory.getSettings().isGetGeneratedKeysEnabled() ) {
 +            throw new AssertionFailure("getGeneratedKeys() support is not enabled");
 +}
 +</code>
 +
 +==== Quellen ====
 +
 +Allgemein:
 +
 +  * http://javabrains.koushik.org/2011/07/hibernate-tutorial-07-primary-keys.html
"Autor: Gunther Pipperr"
prog/java_hibernate.txt · Zuletzt geändert: 2013/04/11 10:48 von gpipperr