Hibernate Аннотации самореферентного класса? - PullRequest
1 голос
/ 16 марта 2011

Я определил этот класс Entity, но, похоже, он не сохраняет детей в базу данных.Есть идеи?

@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;
    }

}

Большое спасибо, Финбарр

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Это потому, что обратная связь никогда не сохраняется; Я могу сказать, что это обратная ассоциация из-за атрибута "mappedBy"

3 голосов
/ 17 марта 2011

Добавьте этот метод к вашему классу:

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());
}

Теперь должно работать.

...