查询Hibernate(JPA)和PostgreSQL的问题

Sha*_*man 1 java postgresql hibernate jpa

我正在尝试使用PostgreSQL作为Hibernate/JPA的数据库.但是,执行简单查询时出错.我的查询如下:

SELECT DISTINCT p FROM UserProfile p ORDER BY :order
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,我将传递一个类似"lastLoginDate"的值:order.但是,在尝试执行查询时,我收到以下异常:

ERROR org.hibernate.util.JDBCExceptionReporter  - ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
  Position: 781
Run Code Online (Sandbox Code Playgroud)

使用MySQL作为数据库,这个查询工作正常,但我们想转向PostgreSQL.我的整体配置和数据库连接是正确的,因为我看到正确创建的表.有什么我想念的吗?我需要设置配置属性吗?您可以给予的任何帮助将非常感谢.谢谢!

leo*_*loy 7

Postgresql禁止查询,因为它是不明确的:

there's actually a definitional reason for it.  Consider

        SELECT DISTINCT x FROM tab ORDER BY y;

For any particular x-value in the table there might be many different y
values.  Which one will you use to sort that x-value in the output?
Run Code Online (Sandbox Code Playgroud)

这不是很清楚自己想要什么,但如果你打算将所有记录进行排序(一个例子吗?)":为了"栏,然后删除重复值,你可以做第一个具有明确ON:,然后重新排列:

 SELECT p FROM  
    ( SELECT DISTINCT ON (p) * from UserProfile ORDER BY p , :order) 
    AS UserProfileUniq 
  ORDER BY :order ;
Run Code Online (Sandbox Code Playgroud)