0 Replies Latest reply on Feb 15, 2007 8:04 AM by Sebastiano Gazzola

    Bidirectional onetomany relationship doesn't work

    Sebastiano Gazzola Newbie

      I'm really getting crazy. This is my first experience with EJB and
      JBoss (and Hibernate as well actually) but I'm finding a lot of
      problems even with the easy stuff!!! I wanna set up a one-to-many
      relationship between two entities, but this relationship is supposed
      to be bidirectional. I have a "site" entity and a "item" entity and I
      want to say that every site can have more than one entity. But I would
      like to access the sites linked to an entity from the item object and
      viceversa. These are the code fragments:

      Site.java


      @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY,mappedBy="site")
      public java.util.Collection getItems(){
      return this.items;
      }


      public void setItems(Collection items){
      this.items=items;
      }


      Item.java


      @ManyToOne
      public Site getSite(){
      return this.site;
      }


      public void setSite(Site site){
      this.site=site;
      }


      This operation seems to work actually. Jboss creates a column
      "site_id" on the items table and if I run this code


      Item item=new Item();
      Site site=new Site();
      item.setSite(site);
      manager.persist(site);
      manager.persist(item);


      I find that the "items" table contains a record, and it is mapped to
      the new record I can find on the "sites" table. The problem is that if
      I check the value for site.getItems() after the persist operation I
      get a null value. It seems that the opposite "relationship" is not set
      properly. I get a problem even if I don't persist the site before the
      item and I can't understand why...isn't Hibernate supposed to persist
      automatically the site entity by itself? Maybe I'm using badly the
      annotation, please help me!!!


      Can some of you explain me if it's possible with Hibernate to define a
      many-to-many relationship with some relationship attributes and a many-
      to-one relationship that connects an entity with itself (in order to
      build a tree)?


      Thank you in advance for your help


      Cold