최대 절전 모드 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]]
). 루트까지 모든 부모 객체를 가져 오는 방법? 정말로 당신의 도움이 필요합니다, 고마워요! 추가 : category
이 방법으로 검색됩니다 : 1.
일시적인 객체에게 그것을 유지하는 category
2. saveOrUpdate()
방법을 만듭니다.
3. getIdentifier()
을 사용하여 추가 된 카테고리의 ID를 반환하십시오.
4.이 범주 개체를 즉시 검색하려면 get()
을 사용하십시오.
그래서 나는 그것이 지속 된 객체를 즉시 검색 할 때 hibernate가 캐시 된 영속 객체를 반환했다면 어떻게 될까?
생성 된 쿼리를 살펴 보았습니까? – aksappy
이상한데 쿼리가 생성되지 않았습니다. : –
show_sql 플래그가 true로 설정되어 있는지 확인하십시오. 이상적으로 로그에 표시된 매핑 정보가 최소한이어야합니다. 또한 saveOrUpdate()를 수행 한 후 식별자를 가져 오기 전에 플러시를 수행합니까? – aksappy