我有一個實體CategoryModel
。一個屬性的複製下面:休眠查找不在集合中的實體
@OneToMany(cascade = CascadeType.ALL)
private List<CategoryModel> children;
我怎麼能執行一個查詢將返回所有CategoryModel
實體不在另一個CategoryModel
實體的children
集合(即根類)?
我有一個實體CategoryModel
。一個屬性的複製下面:休眠查找不在集合中的實體
@OneToMany(cascade = CascadeType.ALL)
private List<CategoryModel> children;
我怎麼能執行一個查詢將返回所有CategoryModel
實體不在另一個CategoryModel
實體的children
集合(即根類)?
最有效的方法是使雙向關係,並在「多」方適用IS NULL
:
SELECT c FROM CategoryModel c WHERE c.parent IS NULL
如果你不能改變的關係,你可以做這樣的事情:
SELECT c FROM CategoryModel p RIGHT JOIN p.children c WHERE p IS NULL
也許你不能改變模式,但是RootCategoryModel和CategoryModel是否更適合這個標準化?我不知道這是否能讓你的問題更容易解決,但只是好奇而已。 – 2011-03-22 17:31:39