Mysql org.hibernate.engine.jdbc.spi.SqlExceptionHelper:order子句中的未知列“PrefId”
我正在尝试对视图前面的一列执行加权排序。我在现场看到了订单 这正是我的疑问: 选择 e、 employeeName作为empName, e、 员工登录为empAlias, e、 经理姓名作为经理姓名, e、 managerLogin作为managerAlias, b、 buildingName作为buildingName, b、 以国为国,, b、 区域作为区域, 如果w.preferenceId为NULL,则0,否则w.preferenceId以前缀结束, 如果w.LastUpdateDate为NULL,则e.LastUpdateDate ELSE w.LastUpdateDate结束为updateDate 来自员工_详情e 内部连接建筑物\u详图如e.building=b.building上的b e.employeeId=w.employeeId上的左加入工作区详细信息 其中e.IsWorkplaceRefScopeIncluded=1 按字段前缀4、3、99、2、1、0排序; 查询在我的工作台上运行良好,结果与预期的一样,但在通过hibernate执行相同的查询时Mysql org.hibernate.engine.jdbc.spi.SqlExceptionHelper:order子句中的未知列“PrefId”,mysql,hibernate,jpa,sql-order-by,Mysql,Hibernate,Jpa,Sql Order By,我正在尝试对视图前面的一列执行加权排序。我在现场看到了订单 这正是我的疑问: 选择 e、 employeeName作为empName, e、 员工登录为empAlias, e、 经理姓名作为经理姓名, e、 managerLogin作为managerAlias, b、 buildingName作为buildingName, b、 以国为国,, b、 区域作为区域, 如果w.preferenceId为NULL,则0,否则w.preferenceId以前缀结束, 如果w.LastUpdateDate
org.hibernate.engine.jdbc.spi.SqlExceptionHelper: Unknown column 'PrefId' in 'order clause'
我还尝试了FIELDw.preferenceId的-ORDER,4,3,99,2,1,0,但这似乎不符合加权排序顺序
我哪里做错了???你在这里似乎有两个问题。首先,PrefId是您在查询前面的select子句中定义的别名。Hibernate似乎在抱怨这一点,所以只需使用preferenceId即可。其次,字段是MySQL扩展,不是ANSI标准的一部分,也不是Hibernate查询语言的一部分。但是,您可以重构ORDER BY子句: 为此,请使用大小写表达式:
ORDER BY
CASE COALESCE(w.preferenceId, 0) WHEN 4 THEN 1
WHEN 3 THEN 2
WHEN 99 THEN 3
WHEN 2 THEN 4
WHEN 1 THEN 5
WHEN 0 THEN 6
ELSE 7 END
实际上,你似乎有两个问题。首先,PrefId是您在查询前面的select子句中定义的别名。Hibernate似乎在抱怨这一点,所以只需使用preferenceId即可。其次,字段是MySQL扩展,不是ANSI标准的一部分,也不是Hibernate查询语言的一部分。但是,您可以重构ORDER BY子句: 为此,请使用大小写表达式:
ORDER BY
CASE COALESCE(w.preferenceId, 0) WHEN 4 THEN 1
WHEN 3 THEN 2
WHEN 99 THEN 3
WHEN 2 THEN 4
WHEN 1 THEN 5
WHEN 0 THEN 6
ELSE 7 END