Primary key vor endgültigem speichern

Hallo,

benötige eine Möglichkeit um (vor) dem persistent machen einen Primärschlüssel zu reservieren.

Arbeite mit EJB3 (EntityManager), Hibernate und Facelets. Das ganze sieht so aus:

  1. Neue Entität (A) erzeugen (Constructor<T> c = getEntityClass().getConstructor(new Class[] {});setEntity(c.newInstance(new Object[] {}));)
  2. In diese Entität kann nun über das Web die Daten eingegeben werden
  3. Zu dieser Entität benötige ich eine Reihe anderer (neuer) Entitäten(B)
  4. A OneToMany, B ManyToOne
  5. Bevor ich zu A allerdings referenziere benötige ich dessen Primärschlüssel
  6. Dieser ist vor dem persistent machen nicht verfügbar (Auto generatet)

Das Problem ist das ich nach 1. noch nicht EntityManager.persist() aufrufen kann um einen PrimaryKey zu erhalten, da alle Felder noch NULL Values enthalten.

Kennt jemand eine Möglichkeit wie ich das lösen kann?
Würde mich riesig freuen wenn mir jemand helfen könnte.


Danke schon mal im vorraus.
Gruß
Andreas
 
Hallo,

eine Möglichkeit wäre Beispielsweise das mit @Id ausgestattete Primary-Key Attribut zusätzlich die GeneratorStrategy=NONE zuzuweisen und dann selbst (über eine Art NumberService) entsprechend ID's zuzuweisen...

Schau mal hier:
http://blogs.sun.com/pblaha/entry/primary_key_generation_in_ejb

Wobei der Generatortype NONE scheinbar nicht in der finalen EJB 3.0 Spec erwähnt wird... na ja, ein versuch ist's Wert.

Warum brauchst du eigentlich den von der Datenbank erzeugten primary key? Um irgendwelche Fremdschlüssel Beziehungen zu knüpfen? Das erledigt bei entsprechender Konfiguration JPA für dich (i.d.R.) ohne Probleme ...;-)

Gruß Tom
 
Zurück