是否可以使用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查询以同时提取 cat
和dog
{但仅提取dog
如果cat
当然是null
。
答案 0 :(得分:0)
正如您对问题的评论中提到的,您的问题确实缺乏背景。所以很难回答。
您可以执行多态查询。这是特定于Hibernate的,而不是JPA的所有部分。
List animals = session.createQuery( "from Animal" ).list()
这会让你回归所有的动物,包括猫和狗。
从那里你可以根据需要构建一个限制。您似乎想要的限制类型的问题是,它可能需要一个子查询,这通常会导致数据库服务器上的查询计划效率低下。