M-Tech Geschrieben 5. August 2008 Teilen Geschrieben 5. August 2008 hi, gibt es hier hibernate-spezialisten, die mir bei meinem problem weiterhelfen könnten?? also ich hab folgendes problem. ich hab eine klasse, welche eine liste enthält. diese liste kann wiederrum nur typen der gleichen klasse aufnehmen, also eine liste mit rekursiven objekten. ich hoff ich konnte das richtig beschreiben? also die objekte werden korrekt in die datenbank gespeichert. mein problem ist nur diese beziehungstabelle. anstatt, daß er da nix macht, speichert er mir immer wieder bei jedem speichervorgang ein neuesn schlüsselpaar in der verknüpfungstabelle ab. die objekte selbst werden nicht verdoppelt. die konfiguration erfolgt über die annotations über den klassenvariablen. @JoinColumn wurde gesetzt, damit mir des alles nicht abstürzt, weil er natürlich eine Exception bringt, wenn er versucht das gleiche Schlüsselpaar 2mal in die Tabelle zu speichern. Ach ja..von dieser Abstracten klasse werde noch andere Klassen, wie z.B. Unternehmen, Gebäude usw abgeleitet. Diese werden dann in die Datenbank gespeichert und nicht die Basis...ach ihr versteht schon, wie ich meine oder? hier is mal meine klasse..auszugsweise: @Entity @Table(name="basis") @PrimaryKeyJoinColumn(name="id") public abstract class Basis extends PersistableObject implements Serializable { @ManyToMany (cascade=CascadeType.ALL) @JoinColumn(unique=false) @LazyCollection(value=LazyCollectionOption.FALSE) @Cascade (value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN) private void List<Basis> listObjects = new ArrayList<Basis>(); /** * @return the listObject */ public List<Basis> getListObject() { return listObject; } /** * @param listObject the listObject to set */ public void setListObject(List<Basis> listObject) { this.listObject = listObject; } so ich lass das jetzt einfach mal stehen. ich hoff es kann mir jemand helfen? wäre echt sehr sehr dringend. viele liebe grüße von mir sascha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 5. August 2008 Teilen Geschrieben 5. August 2008 Servus, kannst Du mal den Codeausschnitt posten, der zeigt, wie Du ein solches Objekt abspeicherst? Und dann: ist das JPA oder pures Hibernate? Es sieht nach JPA aus, aber ich kenne auch die Standard Hibernate Annotations kaum. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
M-Tech Geschrieben 5. August 2008 Autor Teilen Geschrieben 5. August 2008 Hi und Servus, danke für deine eventuelle Hilfe, aber das Problem lag ganz woanders. . Schön langsam mag ich Hibernate wieder . Viele Grüße Sascha PS: Es ist ein Mischmasch aus JP-Annotations und Hibernate-Annotations, denn Hibernate erweitert die JP um vieles . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 6. August 2008 Teilen Geschrieben 6. August 2008 Guten Morgen! Woran lags denn, vielleicht haben wir auch mal so einen Fehler. Schöne Grüße, Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
M-Tech Geschrieben 6. August 2008 Autor Teilen Geschrieben 6. August 2008 Hi, das ist etwas schwieriger zu erklären. Ich habe eine Datenstruktur "Basis" mit einer listeObjects, welche wiederrum "Basis"-Objekte enthält. Also im Endeffekt eine Liste mit rekursiven Objekten. Mein Problem war ja, daß er mir die Verknüpfungstabelle "BASIS_BASIS" immer wieder gefüllt hat, obwohl z.B. ein Basisobjekt bereits persistiert wurde. Ich arbeite hier mit einem Baum. Dieser Baum hat als Grundlage eine Liste als Datenstruktir und im Baum selber hängen ja wiederrum Objekte. Jetzt wenn sich im Baum etwas geändert hat, dann wurde einfach das selektierte Objekt aus dem Baum genommen, geändert und gespeichert. Danach liefern mir meine Hibernate-Methoden ein Objekt zurück und dieses Objekt setze ich wieder in den Baum. Ich hatte nur vergessen, daß ich dieses Objekt nicht nur im Baum ersetzen muß, sondern auch in der Datenstruktur. Ist ewas kompliziert zu erklären, wenn du den Sourcecode nicht kennst. Also kurz gesagt war es ein Refresh-Problem meinerseits. ). Ich hoff du konntest mit meiner Erklärung etwas anfangen? Viele Grüße Sascha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.