我正在使用以下查詢獲取與用戶鏈接的所有水果。JPQL:使用繼承的以下WHERE子句的問題
return (List<Fruit>) getEm()
.createQuery(
"SELECT DISTINCT f FROM Fruit f, User u WHERE (f = u.apples OR f = u.oranges OR f = u.mangos) AND u.id = :id")
.setParameter("id", id).getResultList();
相應實體如下:
public class Fruit{
private int id;
}
public class User{
private int id;
private Collection<Apple> apples;
private Collection<Orange> oranges;
private Collection<Mango> mangos;
}
public class Mango extends Fruit{
private int id;
...
}
public class Apple extends Fruit{
private int id;
...
}
public class Orange extends Fruit{
private int id;
...
}
的問題是,上述查詢不給我一個結果,如果有收藏的不存在的用戶。所以,如果用戶沒有蘋果,我不會得到0作爲結果。我已經嘗試用u.apples IS NOT EMPTY等語句來捕捉錯誤,但它也可以解決問題。
那麼,你能否給我一個這種情況下的提示?整個事情會更容易,如果水果將與用戶有一對多的關係,但不幸的是我不能承受這個程序...
在此先感謝!