java - Hibernate Criteria如何对父子关系上的行计数投影进行排序

标签 java sql hibernate criteria

嗨,任何人都可以帮我根据以下信息创建一个标准吗? 基本上,这段代码将被添加到一个函数中,该函数返回找到的行数 子行数大于 10。值 10 将是动态的。

我已经被这个问题困扰一天了,需要一些帮助。

请注意,我无法控制数据库本身,因此无法使用 View 或更改数据库架构。此外,这是问题的简化版本,省略了客户端和 map 字段的其他属性,并且投影和标准的创建将被重构为通用帮助器方法。

public class client
{
private int id;
private string code;
@OneToMany(fetch=FetchType.Lazy)
@JoinColumn(name="code", nullable=true)
private List <MapFields> mapFields;
}

public class MapFields
{
private int id;
private string code;
}

如何使用 hibernate 标准执行此 sql 查询。

SELECT COUNT(*)
FROM 
(
    SELECT MapFields.code
    FROM Client LEFT JOIN MAPFields on Client.code
    GROUP BY MapFields.code
    HAVING COUNT(MapField.code) > 10
) AS A

我已经尝试过以下方法,但没有成功。我不断遇到异常,告诉我无法解析属性。

org.hibernate.QueryException:无法解析属性:numberOfMapFields of:...Client

Criteria criteria = getCurrentSession().createCriteria(Client.class)

criteria.createAlias("mapFields", "mapFields", CriteriaSpecification.Left_Join)

ProjectionList pl = Projections.projectionList();

pl.add(Projections.count("mapFields.code", "numberOfMapFields"));

pl.add(Projections.rowCount());

criteria.setProjection(projectionList);

criteria.add(Restriction.ge("numberOfMapFields", "10"))

criteria.list();

请任何人提供有关如何使用 hibernate 标准执行此操作的代码片段,如果您需要更多信息,请告诉我,我会尽力提供更多信息。

最佳答案

selects in the from clause are not supported by criteria. either use hql or sql - Firo

哦!感谢您提供的信息...

关于java - Hibernate Criteria如何对父子关系上的行计数投影进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106291/

相关文章:

mysql - 在mysql表中实现外键

java - 在 Derby 数据库中, "username"和 "table owner"有何关联?设置它们的简单方法是什么?

java - 无法通过 IfElse 语句定位 css 元素

java - 在 ubuntu 上安装 java 9 失败 - 404 错误

c# - 在 SQL Server 2008 中调用存储过程时超时

php - 查询适用于 Firefox,但不适用于 ie 和 chrome

mysql - Eclipse Mars 中使用的 Hibernate 和 MySQL 版本

java - EJB3 或 "Spring3 + hibernate"哪个合适

java - 需要 mysql 的 hibernate 属性

java - 等待完成的 Java 进程