我在使用 Hibernate 4 时有一些问题。我有一个自映射 POJO,它也是双向的。我可以从父类别中获取子类别列表,但无法从其子类别中获取父类别。 这是我的代码:
@Entity
public class Category {
private Long id;
private String cateName;
private String cateType;
private String description;
private List<Category> childCategories;
private Category category;
public Category() {
childCategories = new ArrayList<Category>();
}
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name="parent_id", referencedColumnName="id")
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public String getCateName() {
return cateName;
}
public void setCateName(String cateName) {
this.cateName = cateName;
}
public String getCateType() {
return cateType;
}
public void setCateType(String cateType) {
this.cateType = cateType;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@OneToMany(mappedBy = "category")
public List<Category> getChildCategories() {
return childCategories;
}
public void setChildCategories(List<Category> childCategories) {
this.childCategories = childCategories;
}
@Override
public String toString() {
return "Category [id=" + id + ", cateName=" + cateName + ", cateType="
+ cateType + ", description=" + description + "]" + "Parent: " + category;
}
}
这是一个正常的嵌套类别映射。我可以category.getChildCategories()
正常使用获取子列表,但是如果我使用category.getCategory()
,它返回的父对象只包含id,其他为null,像这样:[id=7, cateName='Java', cateType='2', description='java category', category=[id='2', cateName=null, cateType=null, description=null, category= null]]
。如何获取所有父对象直到root?真的需要你的帮助,谢谢!附加:category
以这种方式检索:
1.创建瞬态对象category
2.使用saveOrUpdate()
方法将其持久化。
3.getIdentifier()
用于返回添加类别的Id。
4. 用于get()
立即检索该类别对象。
所以我想如果我立即检索到它被持久化的对象,休眠返回一个缓存的持久性对象?