0

是否可以使用 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 查询来同时获取两者 但当然只获取if is )。catdogdogcatnull

4

1 回答 1

0

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

您可以执行多态查询。这是特定于 Hibernate 的,完全不是 JPA 的一部分。

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

这将返回所有动物,包括猫和狗。

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

于 2013-05-25T15:35:02.517 回答