-->
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.  [ 3 posts ] 
Author Message
 Post subject: m:n Beziehung auf sich selbst führt zu Exception
PostPosted: Wed Feb 15, 2006 8:54 am 
Newbie

Joined: Wed Feb 15, 2006 8:40 am
Posts: 7
Hallo,
ich möchte eine Struktur mit Knoten erzeugen, welche * Vorgänger als auch * Nachfolger haben kann.

Das Mapping wir mit xdoclet erstellt und ich habe hier einen Ausschnitt aus der Klasse RightsNode:

Code:
  /**
   * Returns the children
   *
   * @hibernate.set
   *     table="parent_child_nodes"
   *     lazy="true"
   * @hibernate.collection-key
   *     column="parent_id"
   * @hibernate.collection-many-to-many
   *     class="com.indatex.data.rightsmanagement.RightsNode"
   *     column="child_id"
   */
  public List getChildren() {
    return this.childNodes;
  }

  public void setChildren(List childNodes) {...}

  /**
   * Returns the parents
   *
   * @hibernate.set
   *     table="parent_child_nodes"
   *     inverse="true"
   *     lazy="true"
   * @hibernate.collection-key
   *     column="child_id"
   * @hibernate.collection-many-to-many
   *     class="com.indatex.data.rightsmanagement.RightsNode"
   *     column="parent_id"
   */
  public List getParents() {
    return this.parentNodes;
  }


Daraus entsteht folgendes Mapping in der hbm.xml Datei

Code:
        <set
            name="children"
            table="parent_child_nodes"
            lazy="false"
            cascade="all"
            sort="unsorted"
        >

            <key
                column="parent_id"
            >
            </key>

            <many-to-many
                class="com.indatex.data.rightsmanagement.RightsNode"
                column="child_id"
                outer-join="auto"
             />

        </set>

        <set
            name="parents"
            table="parent_child_nodes"
            lazy="false"
            inverse="true"
            cascade="all"
            sort="unsorted"
        >

            <key
                column="child_id"
            >
            </key>

            <many-to-many
                class="com.indatex.data.rightsmanagement.RightsNode"
                column="parent_id"
                outer-join="auto"
             />

        </set>


Wenn ich nun aus meiner Anwendung einen Knoten hole und dieser erstmal keine Nachfolger und auch keine Vorgänger hat, dann tritt die folgende Exception auf:

Code:
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.indatex.data.rightsmanagement.RightsNode#0]
   org.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:27)
   org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:118)
   org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:75)
   org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:643)
   org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
   org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
   org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
   com.indatex.data.rightsmanagement.RightsNode$$EnhancerByCGLIB$$9f629015.getChildrenFirstLevel(<generated>)
   com.indatex.struts.actions.AdminAction.execute(AdminAction.java:40)
   org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
   org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
   org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
....


Ich hätte an der Stelle eigentlich erwartet, daß getChildren null zurückliefert. Denn in der Datenbank habe ich nunmal nur einen einzigen Knoten drin und in der Mappingtabelle ist kein Eintrag vorhanden.

Danke für eure Hilfe,
Andi


Top
 Profile  
 
 Post subject:
PostPosted: Wed Feb 15, 2006 10:35 am 
Newbie

Joined: Wed Feb 15, 2006 8:40 am
Posts: 7
Gelöst, in einer JSP Seite wurde die ID hart angegeben, und die ID stimmte nicht mit der ID, die die Squence erzeugte, überein.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 06, 2006 6:43 am 
Newbie

Joined: Wed Jan 11, 2006 5:15 am
Posts: 15
Wenn du einen solchen konten löscht, löscht sich dann tatsächlich alles? ich habe auch so ein konstrukt und ich bekomme graue haare dabei :o|
Bei mir ist allerdings noch vererbung im spiel und "lazy" funktioniert gleich garnicht!
wenn du mir sagts, dass das löschen bei dir funktioniert (also alle knoten in der hirachie...), dann muß ich nochmal gucken was ich falsch gemacht habe!

gruß Martin


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