-->
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: Parent/Child Relation Mapping mit mehreren Parents
PostPosted: Thu Mar 25, 2010 10:32 am 
Newbie

Joined: Thu Mar 25, 2010 10:16 am
Posts: 2
Hallo Hibernate Community,

ich habe ein Problem damit ein Objekt mit mehreren Parents zu mappen - anbei ein kurzer Auszug:
Code:
@Entity
public class Node {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @ManyToMany(cascade = CascadeType.ALL)
  private Set<Node> parents = new HashSet<Node>();

  @ManyToMany(cascade = CascadeType.ALL)
  private Set<Node> children = new HashSet<Node>();

}


In diesem Graph ist es möglich, dass ein Node mehrere Parent-Nodes hat, wenn ich nun den Root Node nehme und speicher, gibt es immer Probleme (s.u.) wenn ich versuche einen Node zu speichern der über keinen Parent Node bzw. Child Node verfügt.

Gibt es eine Möglichkeit nur die Nodes in der ParentChild Relation zu speichern, deren parents/children nicht leer sind, bzw. gibt es eine bessere Lösung dafür ?

Danke im Voraus für die Hilfe.


--
Hibernate operation: could not insert collection: [org.example.Node.children#1];
uncategorized SQLException for SQL [insert into Node_Node (Node_id, children_id) values (?, ?)];
SQL state [90006]; error code [90006];
NULL nicht zulässig für Feld PARENTS_ID
NULL not allowed for column PARENTS_ID [90006-71];
nested exception is org.h2.jdbc.JdbcBatchUpdateException: NULL nicht zulässig für Feld PARENTS_ID
NULL not allowed for column PARENTS_ID [90006-71]


Top
 Profile  
 
 Post subject: Re: Parent/Child Relation Mapping mit mehreren Parents
PostPosted: Fri Mar 26, 2010 5:12 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Das Problem liegt daran, dass Du 2 unabhaengige Relationen ueber ein und diesselbe join-table abwickelst
(dass passiert wenn start - und zielklasse beide male diesselbe sind).
Und ich glaube dass deine eigentliche Absicht ist, eine einzige bidirektionale Relationen zu haben und nicht 2 separate.

Frage: wenn a chlld von b ist , ist dann zwingendermasse b auch parent von a ?
Falls ja, dann must Du die Relation bidirectional deklarieren (= einmal das mappedBy attribute verwenden)

Code:
@ManyToMany(mappedBy="children", cascade = CascadeType.ALL)
  private Set<Node> parents = new HashSet<Node>();

@ManyToMany(cascade = CascadeType.ALL)
private Set<Node> children = new HashSet<Node>();


Falls nein (vaterrolle hat mit kindrolle gar nichts zu tun),
must Du explicit den Namen der join-tables differenzieren:


Code:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name="Node_Parent")
  private Set<Node> parents = new HashSet<Node>();

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name="Node_Children")
private Set<Node> children = new HashSet<Node>();


Top
 Profile  
 
 Post subject: Re: Parent/Child Relation Mapping mit mehreren Parents
PostPosted: Fri Mar 26, 2010 5:23 am 
Newbie

Joined: Thu Mar 25, 2010 10:16 am
Posts: 2
In der Tat war es eine bidirektionale Beziehung und das 'mappedBy' Attribut hat geholfen.

Vielen Dank für die schnelle Hilfe !


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.