私のコードは次のようになります。 setChildren()
の名前をnull
とする理由は何ですか?フィールドがヌルである間にsetterで関連オブジェクトを使用するJPA/Hibernate
public class Node {
private String id, name, parentName;
private Set<Node> children = new HashSet<Node>();
private Node parent;
private Set<String> childrenNames = new HashSet<String>();
@Id @GeneratedValue public String getId() { return id; }
public String getName() {return name;}
@ManyToOne @JoinColumn(name="PARENT_ID") public Node getParent(){retrun parent;}
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent", fetch=FetchType.EAGER)
public Set<Client> getChildren(){return Collections.unmodifiableSet(children)}
@Transient public String getParentName() { return parentName;}
@Transient public Set<String> getChildrenNames() {return childrenNames;}
// PROBLEM here ------------
public void setChildren(Set<Node> children) {
this.children = children;
for(Node child : children) {
childrenNames.add(child.getName()); //Adds NULL !!!!!!
}
}
// Other Setters
}
am n00bですので、このままお待ちください。
このコードをデバッグし、setChildren(...)の中にブレークポイントを設定すると、子ノードオブジェクトのすべてのフィールド(@Idを除く)がnullに設定されていますか? –
が正しい。 '@ Id 'を除くすべてのフィールドは' null'です。助けてください – Ram
同様の問題のコレクションについてはhttp://stackoverflow.com/questions/6217096/hibernate-mapping-returns-null-propertiesも参照してください。 – Gregor