在hibernate条件查询中选择"group by"的"all columns"

ins*_*ect 10 java mysql hibernate group-by hibernate-criteria

我想使用"group by"编写条件查询,并希望返回所有列.

Plane sql是这样的:

select * from Tab group by client_name order by creation_time;
Run Code Online (Sandbox Code Playgroud)

我知道它会有count(distinct client_name)多少行.

我当前的查询似乎没有给出正确的结果如下:

Criteria criteria = getSession(requestType).createCriteria(Tab.class);
        criteria.setProjection(Projections.projectionList().add(Projections.groupProperty("client_name")));
        criteria.addOrder(Order.asc("creationTime"));
Run Code Online (Sandbox Code Playgroud)

此查询"client_name"仅返回.我不想手动输入所有列名.必须有某种方式,可以做些什么?

atr*_*ain 0

我认为你误解了一些东西。如果您GROUP BY使用 SQL,那么您需要按所有选定的列进行分组。这同样适用于 Hibernate - 如果您groupProperty在 a 中Projection,则告诉 Hibernate 该列是组列。如果没有引用其他列/字段,Hibernate 将假设您不需要它们,因为它们也需要分组。

退一步来说:你想做什么?如果表中的所有列都有重复数据,则可能存在错误数据,或者错误地保留了数据。至少,你的钥匙会弄乱。