我正在使用以下查询获取与用户链接的所有水果。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等语句来捕捉错误,但它也可以解决问题。
那么,你能否给我一个这种情况下的提示?整个事情会更容易,如果水果将与用户有一对多的关系,但不幸的是我不能承受这个程序...
在此先感谢!