java - 如何使用具有预测和顺序的条件?

标签 java hibernate

Criteria criteria = sessionProvider.getCurrentSession().createCriteria(Foo.class);
criteria.createAlias("game", "game");
if (from != null) criteria.add(Restrictions.ge("game.created", from.toDate()));
if (to != null) criteria.add(Restrictions.lt("game.created", to.toDate()));
criteria.setProjection(Projections.distinct(Projections.property("game")));
            criteria.addOrder(Order.desc(("game.created")));
            criteria.setMaxResults(100);
            games = criteria.list();

我使用上面的代码来获取游戏。实体 Foo 有一个名为 game 的字段。我需要通过 Foo 获取游戏引用。但是当我运行上面的代码时,出现以下错误。

Caused by: org.postgresql.util.PSQLException: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
  Position: 246

如何正确添加预测和订单?

最佳答案

您的逻辑有错误,您尝试像这样制作:

Select Distinct game From Foo Order By created 

逻辑上错误,服务器无法按“创建”排序结果,因为仅存在“游戏”列,并且不可能按“创建”排序。

关于java - 如何使用具有预测和顺序的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677237/

相关文章:

java - 基于访问的重定向

java - 使用 Spring 过滤来自请求的数据

java - 无双向实体的 Hibernate 关系问题

spring - JPA:删除分离的实例

hibernate - 如何在 JPA 2 实体中映射 postgresql "timestamp with time zone"

java - 基于内存的数据存储

java - 如何使用 InetSocketAdress 创建新的 MulticastSocket?我总是收到 BindException

java - 是否可以将方法名称存储在数组中,并计算它被调用的次数?

hibernate - Hibernate 查询缓存加载实体

java - 将字符串处理为整数并在数据库中插入空值时出错