-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Automatische nummer generieren
PostPosted: Tue Jun 30, 2009 3:24 am 
Newbie

Joined: Tue Feb 10, 2009 3:29 am
Posts: 5
Hallo,
ich arbeite erst seit kurzem mit Hibernate und steh vor einem Problem und hoffe Ihr könnt mir etwas weiterhelfen. Meine Tabelle ist ganz einfach, da ich erst paar Test-Anwendungen schreibe um mich in Hibernate einzuarbeiten. In dieser Tabelle habe ich eine Zahl, die soll automatisch beim speichern des Objektes hochgezählt werden, jedoch ist diese Spalte kein primary-Key.
Deswegen wollte ich euch fragen ob es mit Hibernate eine Möglichkeit gibt dies einfach zu lösen.

Wäre für ein Hilfestellung sehr dankbar!


Top
 Profile  
 
 Post subject: Re: Automatische nummer generieren
PostPosted: Tue Jun 30, 2009 11:12 am 
Newbie

Joined: Tue Jun 30, 2009 9:40 am
Posts: 4
Hm, ich interpretiere das mal so... Du hast in deinem gemappten Java Objekt ein Attribut das einen Counter darstellt, und jedesmal wenn du dein Objekt änderst (und somit mit der Datenbank abgleichst), soll dieser Counter um eins erhöht werden, richtig?
Eine Lösungsmöglichkeit bestünde darin, dass du einen Interceptor programmierst der die diese Arbeit abnimmt.
Also in so etwa:

Code:
public class MyInterceptor extends org.hibernate.EmptyInterceptor
   @Override
   public boolean onSave(Object entity, Serializable id, Object[] state,
         String[] propertyNames, Type[] types) {
      
      if(entity instanceof YourObject) {
         ((YourObject)entity).increaseCounter();
      }
      return true;
      
   }
}


Ich hab damals Spring benutzt und den Interceptor mit der Sessionfactory verknüpft. Schau dir mal die Hibernate-Doku an, da findest du sicherlich noch mehr Infos.

Greeetz


Top
 Profile  
 
 Post subject: Re: Automatische nummer generieren
PostPosted: Wed Jul 01, 2009 3:45 am 
Newbie

Joined: Tue Feb 10, 2009 3:29 am
Posts: 5
Danke für deine Antwort. Es ist indirekt das was ich meine, aber diesen Interceptor werde ich mir anschauen. Was ich genauer gemeint habe ist.

Erzeuge das Objekt und speichere es ab, dann soll automatisch die nächste Nummer gesucht und gesetzt werden ( z.b. 5)
Erzeuge ich wieder ein neues Objekt und speichere es ab, so soll er wieder die nächste Nummer suchen und in das Objekt setzt (z.b. 6)

In der Praxis würde man es als fortlaufender Rechnummer bezeichnen oder ähnliches.


Top
 Profile  
 
 Post subject: Re: Automatische nummer generieren
PostPosted: Wed Jul 01, 2009 11:11 am 
Newbie

Joined: Tue Jun 30, 2009 9:40 am
Posts: 4
Hm, also du benötigst so etwas wie ein Sequenz die aber nicht "automatisch" per Mapping vergeben wird (da kein pk). Kannst du nicht, wenn dein Object persistierst wird , einfach eine neue Sequenz-Nummer (sofern deine DB dies unterstützt) heranziehen und den Wert einfach in dein Attribut setzen?

also in so etwa:

Query qry = session.createSQLQuery("select testsequence.nextval from dual");
Integer res = (Integer)qry.uniqueResult();
yourObject.setNumber(res);


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.