2011-03-16 23 views
1

我已經定義了這個實體類,但它似乎並沒有將孩子保存到數據庫中。有任何想法嗎?Hibernate Annotations自引用類?

@Entity 
public class CategoryModel implements Model<CategoryModel>, Serializable { 

    private static final long serialVersionUID = -4520507504770029807L; 

    @Id 
    @Field(index = Index.UN_TOKENIZED, store = Store.NO) 
    private String id; 

    @NotNull 
    private String name; 

    @ManyToOne 
    private CategoryModel parent; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent") 
    private List<CategoryModel> children; 

    public List<CategoryModel> getChildren() { 
     return children; 
    } 

    public String getId() { 
     return id; 
    } 

    public String getName() { 
     return name; 
    } 

    public CategoryModel getParent() { 
     return parent; 
    } 

    public void setChildren(List<CategoryModel> children) { 
     this.children = children; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setParent(CategoryModel parent) { 
     this.parent = parent; 
    } 

} 

非常感謝, 財務巴雷

回答

4

這是因爲反向關聯是永遠不會持久;我可以告訴大家,這是東陽的「的mappedBy」屬性

3

的反向關聯此方法添加到您的類:

public void addChild(CategoryModel child) { 
    child.setParent(this); 
    getChildren().add(child); 
} 

另外,還要確保你初始化children名單內聯的或者在構造函數中:

private List<CategoryModel> children = new ArrayList<CategoryModel>(); 

那就試試這個:

CategoryModel parent = new CategoryModel(); 
for (int i = 0; i < 10; i++) { 
parent.addChild(new CategoryModel()); 
} 

它應該現在工作。

相關問題