java - select 子句中的 Hibernate Criteria SubSelect

标签 java hibernate criteria

大家好,在使用条件 API 编写子选择查询时遇到了一些问题 sublselect 应该从选定的 q 中获取参数

SELECT c.file_id as fid, s.person as person, s.fax_no as fax, s.phone_no as phone,(SELECT SUM( b.ammount )
FROM billing b
WHERE b.constants_file_id = c.file_id
) - (
SELECT
CASE
WHEN b.partioa_pay IS NULL
THEN  "0"
ELSE SUM( b.partioa_pay )
END
FROM billing b
WHERE b.constants_file_id = c.file_id ) AS totalout
FROM constants c
LEFT JOIN firm_management s ON c.firm_management_firm_managment_id = s.firm_managment_id
WHERE s.firm_managment_id = ?

如您所见,根据 c.file_id 重新选择了总计 我玩了两天,但没有运气,也许 stackoverflow 社区中拥有丰富 java 和 hibernate 知识的人能够帮助我。 这就是我得到的异常 2012-01-17 01:48:06,808 ERROR [org.hibernate.util.JDBCExceptionReporter] - (session F2C61D08758E0AA09CA6C99A5B6F2145, thread 113 invoke ByDefenceFirm.getByDefenceFirm)

Criteria crit = session.createCriteria(Constants.class, "co");
              crit.createAlias("co.provider", "pr", Criteria.INNER_JOIN)
         .createAlias("co.firmManagement", "ins", Criteria.LEFT_JOIN)
         .createAlias("co.law", "lw", Criteria.LEFT_JOIN)
         .createAlias("co.billing", "bl", Criteria.LEFT_JOIN)
         .setProjection(Projections.projectionList()
        .add(Projections.property("co.fileId"))
    .add(Projections.property("co.status"))
    .add(Projections.property("co.asi"))
    .add(Projections.property("pr.name"))
    .add(Projections.property("ins.companyName"))
    .add(Projections.property("lw.shortName")));

              DetachedCriteria valueCrit = DetachedCriteria.forClass(Billing.class, "bl")
                          .setProjection(Projections.sum("bl.ammount"))
                          .setProjection(Projections.property("bl.constants"))
                                  .add(Restrictions.eqProperty("bl.constants", "co.fileId"));        
              crit.add(Property.forName("co.fileId").eq(valueCrit));
              crit.setProjection(Projections.property("co.billing"));
              crit.add(Restrictions.eq("lw.lawOfficeId", prid));
resultList = crit.list(); 

如果有人有任何建议,我们将不胜感激。

最佳答案

使用 Criteria 时不可能在 select 子句中进行子选择。您必须使用 HQL 或 SQL 查询。

关于java - select 子句中的 Hibernate Criteria SubSelect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891476/

相关文章:

java - 如何从主方法获取参数到测试类

java - 在 hibernate 中使用连接的最佳方式是什么

NHibernate 标准查询 - 选择不同

java - 日期的 hibernate 条件

java - 在 Java EE 中测试 Singleton 时出现 NullPointerException

java - Netty 可以为每个客户端请求发送多个响应吗

java - 使用 Hibernate 的 Spring Boot 应用程序如何与多个结构相同的表进行交互?

java - 我可以调用具有 hibernate 条件的存储过程吗?

java - Spark - 如何在类中使用 SparkContext?

java - hibernate : fetch lazy collection with HQL