-->
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.  [ 7 posts ] 
Author Message
 Post subject: Identifier ändern
PostPosted: Tue Dec 20, 2005 2:51 pm 
Newbie

Joined: Tue Dec 20, 2005 2:43 pm
Posts: 4
Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp

Hallo zusammen!

Habe ien kleines Problem.

Ich will ein Objekt mit einer Session verbinden (session.load(xxx)), danach seine Id ändern und das Objekt speichern. Dabei bekomme ich immer die Fehlermeldung:

org.hibernate.HibernateException: identifier of an instance of 'package.Class' altered from 1 to 800

Genau das, was die Exception aussagt (alter from 1 to 800) will ich aber machen. Jemand eine Ahnung wie ich eine Id ohne Exception ändern kann???


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 04, 2006 5:43 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Ich denke, dass ist nicht möglich. Die Instanz wird anhand es Primary Keys identifiziert und kann sich daher nicht einfach ändern. Du kannst das Objekt vielleicht kopieren und neu in die Datenbank schreiben.

In welchem Zusammenhang kommt denn so etwas vor?

Gruß Sebastian

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 04, 2006 5:46 pm 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Primaerschluessel aendern sich nicht, ansonsten waeren es keine primaeren Schluessel. http://en.wikipedia.org/wiki/Primary_key


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 06, 2006 3:58 pm 
Newbie

Joined: Tue Dec 20, 2005 2:43 pm
Posts: 4
Hallo Zusammen!

@LaLiLuna
Vielen Dank für den Versuch eine konstruktive Antwort zu liefern. Der Zusammenhang ist folgender. Ich habe eine Tabelle A dessen PK auf eine Tabelle B verweist, in der sehr viele abhängige Daten stehen. Wird der PK in A geändert, so sollen sich kaskadierend alle zugehörigen Wert in B ändern. Problem: In der Hibernate kann ich den PK von A nicht ändern.

@christian
Dieselbe Antwort hat mit Dein Kollege im englischen Forum auch gesagt. Nach der relationalen Theorie habt ihr recht. In der Praxis wird das aber öfter gemacht und somit liegt die Frage ja auch nicht fern, ob Hibernate das unterstützt. Ein einfaches:"Nein Hibernate kann das nicht", hätte gereicht.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Jan 07, 2006 1:29 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Hallo tomcat,

das macht immer noch nicht den Grund deutlich, warum man den Primary Key ändern sollte.
Beispiel:
Mein Primary key ist name, vorname, geburtsdatum. Dann kann ich mir eine Situation vorstellen, dass man ein Feld des Primary keys ändern können muss. In diesem Fall könnte man aber auch einen "syntetischen" Primary key verwenden, wie: integer id.

Gruß Sebastian

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 11, 2006 5:39 am 
Newbie

Joined: Wed Jan 11, 2006 5:15 am
Posts: 15
Nein den PK von A kannst du nicht ändern, weil er nicht nur in B sondern evtl. auch C, D, E.... benutzt wird ;o)
Also lege A2 an und schreibe den in B. In B ist er ja nur ein foreign key, bzw. irgendein Objekt (jetzt in Java...) das leicht ersetzt werden kann.

Gruß Martin


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 12, 2006 7:08 am 
Beginner
Beginner

Joined: Wed Apr 13, 2005 10:34 am
Posts: 38
tomac wrote:
Nach der relationalen Theorie habt ihr recht. In der Praxis wird das aber öfter gemacht ...

Dann versuch das doch mal "praktisch" direkt per SQL. Wird nicht funktionieren.... :~)
Die IMHO bessere Alternative zum Kopieren&Löschen ist es, den fachlichen (änderbaren) vom technischen Primärschlüssel zu trennen.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 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.