tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1201
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LukeHawk LukeHawk ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    1
    Hallo,

    habe folgendes Problem:

    ich bekomme es nicht hin eine Oracle-Sequenz auf ein nicht-primärschlüssel-Feld zu mappen.
    Meinen Primärschlüssel (OID) inkrementiert Hibernate für mich ohne Probleme:
    Code :
    1
    2
    3
    4
    
     @Id
     @SequenceGenerator(name="JOB_OID_GENERATOR", sequenceName="SEQ_JOB_OID")
     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="JOB_OID_GENERATOR")
     private long oid;

    Jedoch habe ich ein weiteres Feld, das über eine Oracle-Sequenz inkrementiert werden soll.
    Mein Ansatz:
    Code :
    1
    2
    3
    4
    
     @SequenceGenerator(name="JOB_IS_NO_GENERATOR", sequenceName="SEQ_IS_NO")
     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="JOB_IS_NO_GENERATOR")
     @Column(name="IS_NO")
     private BigDecimal isNo;

    Ich hatte erwartet daß es so klappen könnte, finde jedoch nirgends Doku dazu (ausser für Primärschlüssel).
    Ergebnis: constraint violation weil er NULL einfügt.
    Es gibt keine Anhaltspunkte dafür, dass irgendein SequenceGenerator überhaupt den Versuch startet die Sequent für IS_NO zu holen.
    Für den primary key OID gibt's Nachrichten wie:
    Code :
    1
    2
    3
    
     11:45:43,029 DEBUG [AnnotationBinder] Add sequence generator with name: JOB_OID_GENERATOR
     ...
     11:45:43,982 DEBUG [SequenceGenerator] Sequence identifier generated: 13538
    Mein Versuch bringt also schlichtweg nichts hervor.

    Kann mir jemand sagen wie ich eine Sequenz für einen nicht-Primärschlüssel aus einer Oracle Sequenz generieren lassen kann?
    Ist @javax.persistence.SequenceGenerator nür für primary keys gedacht? Wenn ja, kennt jemand die dafür geeignete Klasse / Workarounds?

    Umgebung:
    Hibernate Commons Annotations 3.1.0.GA
    Hibernate Annotations 3.4.0.GA
    Hibernate 3.3.0.SP1
    JDK 1.4
    Oracle9i

    Vielen Dank für Eure Hilfe!!

    Gruß,
    Luke
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    deklariere doch mal den Sequence Generator für deine Job-Nummern an der Klasse und gib dann als formula bei der jobNo JPA Spaltendefinition als formula (select seq_name.nextval from dual).
    Außerdem wenn du Java 5 Annotations (ohne Retroweaver) benutzt kann deine Ausführungsumgebung nicht JDK 1.4 sein.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Hibernate und Oracle
    Von Studdi23 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 07.11.09, 15:08
  2. Oracle 10.2 g: Trigger befüllt BLOB feld nicht
    Von planb2000 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.05.09, 21:48
  3. Hibernate + Oracle lower()
    Von darksmilie im Forum Java
    Antworten: 8
    Letzter Beitrag: 17.10.08, 15:39
  4. Oracle: NextVal einer Sequence ermitteln
    Von Gray im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 23.04.07, 12:55
  5. Oracle: Sequence
    Von flowerpower im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 12.10.06, 22:53

Stichworte