を使用して、その中に自身のリストをエンティティに注釈を付けます。ここでの宣言です:どのように私は親として、カテゴリと子などのカテゴリのリストを持っているカテゴリのエンティティを持って休止状態注釈
@Entity
@Table(name="CATEGORYENTITY")
public class CategoryEntity extends BaseEntity<Long> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="ID")
private Long id;
@Column(name="NAME")
private String name;
@Column(name="VIEWSCOUNT")
private Integer viewsCount;
@OneToMany(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinColumn(name="CATEGORY_ID")
private List<CategoryEntity> childCategories;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="CATEGORY_ID")
private CategoryEntity parent;
setters and getters...
それは保存して更新するときに正常に動作しますが、それぞれの子があまりにも親を返すためにとき...カテゴリのすべてを取得しよう!私がmainCatを持っていて、このmainCatに4つの子がある場合、dbからすべてのカテゴリを取得すると、4つの子と驚くほど4のmainCatが返されます...奇妙な部分は返されたオブジェクトが正しいということです正しい4つのメインキャットは同じです!私は何をすべきか?
Iは、結果を取得するために、次のコードを使用:
public List<E> find(E example, final PagingObject paging, Map<?, ?> filter) throws Exception {
// create the criteria
final DetachedCriteria detachedCriteria = createCriteria(filter);
// add restrictions to the criteria based on example entity
pruneCriteria(detachedCriteria, example);
List<E> result = getHibernateTemplate().execute(new HibernateCallback<List<E>>() {
@SuppressWarnings("unchecked")
@Override
public List<E> doInHibernate(Session session) throws HibernateException, SQLException {
// attach criteria to the session
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
// add paging and sort to the criteria
paginate(criteria, paging);
List<E> list = criteria.list();
return list;
}
});
return result;
}
すべてのカテゴリを取得するコードを表示できますか? – Firo
@Firo私はすべてのエンティティに汎用クラスを使用します:\t質問に追加します。 – Ehphan