我有Hibernate HQL查询,它似乎可以完美地完成它的工作,但我目前正在尝试使用Hibernate Criteria API,并希望使用Criteria API表达相同的HQL查询。在这个特定的示例中,我在HQL查询中有两个联接,其中我的第二个联接使用第一个联接的别名。我想实现与标准API相同的东西。这可能吗?
select mt
from MessageThread mt
inner join mt.messageThreadsStatuses ts
inner join ts.threadLocations tl
where ts.user.userId = :userId and tl = 0";
Criteria c = sf.getCurrentSession().createCriteria(MessageThread.class)
.createAlias("messageThreadsStatuses", "ts").setFetchMode("ts", FetchMode.JOIN)
.createAlias("ts.threadLocations", "tl").setFetchMode("tl", FetchMode.JOIN)
.add(Restrictions.eq("ts.user.userId", userId))
.add(Restrictions.eq("tl", 0));
例如,我还尝试将第二个别名定义为:
.createAlias("threadLocations", "tl").setFetchMode("tl", FetchMode.JOIN)
但没有成功。
如以下文档http://billingb.livejournal.com/34266.html所示:
如果使用别名和创建的每个标准对象,那么解决这两个问题都很容易。我认为最大的错误是,大多数示例显示了所有的标准创建链接在一起,但你可以把它们分开,一切都变得更容易理解。我提出的解决方案代码如下所示:
Criteria c = session.createCriteria(Parameter.class);
Criteria cx = c.createCriteria("masterCollections");
cx.createAlias("datasetEntry", "de");
cx.createAlias("parameters", "par");
c.add(Restrictions.or(Restrictions.in("de.datasetId",datasetIDList), Restrictions.in("par.parameterId", parameterIDList)));
问题内容: 我正在寻找一个hibernate标准以获取以下信息: Dokument.class映射到角色roleId Role.class具有一个ContactPerson contactId Contact.class名字姓 我想在Contact类中搜索名字或姓氏,并检索连接的Dokuments列表。 我已经尝试过这样的事情: 我收到错误,无法为类“ Dokument”解析属性“ LastNam
现在我正在使用Criteria Hibernate查询从员工表中查询所有记录,它工作正常。我需要将员工表与库表联接,其中库。Emp_Id=员工。Emp_id我是否需要从员工表中获取所有记录,并从库表中获取书名和结账日期,作为联接选择查询的一部分。我该怎么做?
问题内容: 谁能告诉我如何编写查询并如上所述获取结果,谢谢!我试过加入,左右加入。一切都没有结果。 问题答案: 您可以在这两个表之间写左外部联接最好的理解方法是检查下图 查询您的要求 阅读有关 代码项目的 原始文章将对您有很大帮助:SQL Joins的可视表示 。 在以下位置找到原始版本:MySQL中的JOIN和OUTER JOIN之间的区别 。
应答表 HTTP状态500-请求处理失败;嵌套异常为org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:,靠近第1行,第38列[DELETE com.online.test.model.question,Answer FROM com.online.test.model.question que LEFT JOIN Answer ans
我正在使用hibernate为一个项目连接到我的数据库。 我想有一个查询,从我的数据库中获得产品与特定语言的描述和名称。我拥有的参数是该语言的简称,因此首先我必须获得该语言的id,然后获得所需语言的文本。 我尝试了下面的hql查询,没有成功。
什么是查询以获取所有图书的作者姓名?还有什么是查询得到所有的书的名字为作者的名字?