-->
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: Last INserted ID? Wie bekomme ich diese`?
PostPosted: Thu Sep 22, 2005 3:23 am 
Regular
Regular

Joined: Sat Sep 03, 2005 9:07 am
Posts: 87
Location: Graz, AUSTRIA
FOlgendes Problem:

Ich habe ein Popup, wo der User einen neuen Gateway hinzufügen kann zu einem Partner.
Gateway besitzt eine eigene Tabelle. In diese werden die Felder, die der User im Popup eingibt eingefüllt.
Die Tabelle Gateway ist mit der Tabelle Partner mit einem Foreign Key verbunden (Also die G_id vom Gateway ist in der Tabelle Partner)

Sobald der User die Daten für das Gateway eingegeben hat, drückt er auf speichern und die Daten werden gespeichert und das Popup schließt sich. Nun befindet sich der User wieder im Fenster, wo er die Daten für die Tabelle Partner eingeben kann.

Wie kann ich nun die letzte ID, die für den Gateway verwendet wurde, herausfinden, damit ich diese dann in die PartnerTabelle speichern kann?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 22, 2005 3:43 am 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
Wie sieht die Kommunikation zwischen den Popup und dem Hauptfenster aus?

Wenn du den Gateway in die DB schreibst, bekommst du die Id (aus dem Objekt lesbar).

Also gibt es prinzipiell zwei Möglichkeiten:
- du kannst diese Id wieder an die Benutzerberfläche überreichen. Ob es möglich ist oder nicht hängt davon ab, wie deine Benutzeroberfläche aufgebaut ist - was ich nicht weiß.
- Du hast (ggf versteckte) Informationen an der Oberfläche, die es dir erlauben später den neuen Gateway-Eintrag wieder zu finden.

Andere Möglichkeiten sehe ich nicht, sobald dein System nicht von einem einzigen Benutzer verwendet wird.

Dein Problem ist kein Hibernate-Problem. Es hat damit zu tun, wie du die Information verwaltest (verwalten kannst), die du für deinen Ablauf brauchst - und das hängt sehr von der Technik ab, die du verwendest.

Ich zweifle, dass mein Blabla dir hilft - aber ich möchte nur darauf hinweisen, dass es recht schwierig ist, dir zu helfen, wenn man nicht schon ziemlich genau das gemacht hat, was du gerader macht und dabei diesselbe Technologie verwendet wie du...

Erik


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 22, 2005 5:01 pm 
Regular
Regular

Joined: Sat Sep 03, 2005 9:07 am
Posts: 87
Location: Graz, AUSTRIA
Du schreibst, dass ich die ID wieder aus dem Objekt bekomme? Meine Frage lautet wie ich das schaffe, ich weiß ja nicht, welcher Eintrag der letzte war, außer es gibt sowas wie die bei MySQL wo man die letzte ID abfragen kann.

Im Prinzip muss ich einfach in einer Transaktion zuerst in eine Tabelle A etwas einfügen (Diese Tabelle A besteht aus einer ID und einem Varchar Feld) und danach in einer weitere Tabelle B, die mit der ersten tabelle A via many-to-one verbunden ist, die ID von A (die gerade in A eingefügt wurde) als Foreign Key in Tabelle B einfügen?
Und nun weiß ich eben nicht, wie ich das mache?

Verwende Oracle und die IDs sind Sequencenumbers...

Ich hoffe, ich konnte das nun etwas genauer erklären ;)

Danke schon mal im Voraus für die Hilfe!


Top
 Profile  
 
 Post subject:
PostPosted: Fri Sep 23, 2005 1:33 am 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
Semmerl wrote:
Im Prinzip muss ich einfach in einer Transaktion zuerst in eine Tabelle A etwas einfügen (Diese Tabelle A besteht aus einer ID und einem Varchar Feld) und danach in einer weitere Tabelle B, die mit der ersten tabelle A via many-to-one verbunden ist, die ID von A (die gerade in A eingefügt wurde) als Foreign Key in Tabelle B einfügen?

Wie so oft ist vermutlich die Lösung gar nicht so schwer, ich muss aber das Problem verstehen...

Verstehe ich richtig aus deiner Aussage, dass innerhalb derselben Transaktion (und Session) in A und B eingefügt wurde?

Ich hatte nämlich ursprünglich verstanden, dass es zwei unterschiedliche Transaktionen/Session sind.

Wenn wir das Thema Benutzeroberfläche und Popup vorerst beiseite lassen, ist das Szenario, was du beschreibst für Hibernate kein Problem (wenn das Mapping stimmt natürlich). Du schreibst einfach (sinngemäß):

Code:
A a = new A();
...
session.save(a);
...
B b = new B();
...
b.setA(a);
...
session.save(b);
...

und alles ist gut...

Jetzt ist das Problem, dass an einigen Stellen, wo oben ... steht, anscheinend Roundtrips zwischen Oberfläche und Server passieren - und ich einfach zu wenig über deine Applikation weiß/verstehe, um sagen zu können, wie du dieses Szenario adaptieren kannst/muss.

Hoffe es ist für dich etwas Verwertbares dabei...

Erik


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.