使用HQL获取多个实体

时间:2013-05-25 04:34:33

标签: java hibernate hql

是否可以使用HQL获取多个实体?我发现自己写了很多代码,如:

obj1 = HQL1;
if (obj1 == null)
  obj2 = HQL2;

所以我想知道是否可以将obj1 == null检查折叠到HQL查询中,并在条件为真的情况下同时获取obj2。

编辑:

考虑这样的代码:

Animal cat, dog = null;
cat = currentSession.createQuery("from Cat where id = 1").uniqueResult();
if (cat == null)
  dog = currentSession.createQuery("from Dog where id = 2").uniqueResult();

我的问题是,是否有办法编写单个HQL查询以同时提取 catdog {但仅提取dog如果cat当然是null

1 个答案:

答案 0 :(得分:0)

正如您对问题的评论中提到的,您的问题确实缺乏背景。所以很难回答。

您可以执行多态查询。这是特定于Hibernate的,而不是JPA的所有部分。

List animals = session.createQuery( "from Animal" ).list()

这会让你回归所有的动物,包括猫和狗。

从那里你可以根据需要构建一个限制。您似乎想要的限制类型的问题是,它可能需要一个子查询,这通常会导致数据库服务器上的查询计划效率低下。