【发布时间】:2011-05-26 14:01:11
【问题描述】:
如何将以下 SQL 查询转换为 HQL?
SELECT count(sa.AID)
FROM A sa
, B sal,C m
WHERE sa.AID = sal.AID(+) and sa.BID = m.BID and sa.AID ='0001'
【问题讨论】:
如何将以下 SQL 查询转换为 HQL?
SELECT count(sa.AID)
FROM A sa
, B sal,C m
WHERE sa.AID = sal.AID(+) and sa.BID = m.BID and sa.AID ='0001'
【问题讨论】:
您需要在 JAVA 中将每个 table/column 转移到其关联的 Entity/Class 中,然后使用 Hibernate ORM 构建查询,如下所示。
假设
- 表sa 的实体名称为saEntity,表B 的实体名称为bEntity,表C 的实体名称为cEntity。
- AID 列的类名是AidClass,BID 列的类名是BidClass
然后,Hibernate ORM 查询可以按以下方式编写(我喜欢在多行注释内格式化 HQL 查询,以使其更易于阅读和适应)。
@Query( "SELECT COUNT(sa.AidClass) "
+ "FROM saEntity sa, "
+ " bEntity sal "
+ " cEntity m"
+ "WHERE sa.AidClass = sal.AidClass"
+ " AND sa.BidClass = m.BidClass "
+ " AND sa.AidClass ='0001'")
public List <?> runMyQueryMethod();
【讨论】:
试着看看这个问题的答案。
或者这篇文章可能会有所帮助..
https://forum.hibernate.org/viewtopic.php?t=972441
如果您展示了一些映射,我可能会对 HQL 有所帮助。你可以使用
Session.CreateSQLQuery 代替??
【讨论】: