gpt4 book ai didi

java - 使用 JPA 执行查询时出错

转载 作者:行者123 更新时间:2023-11-30 23:34:24 25 4
gpt4 key购买 nike

我正在尝试使用 SQL 语句 Order by using JPA,在具有此字符串的日期时间列数据类型上,在 Mysql 数据库上对结果集进行排序:

Query query = em.createQuery("SELECT e FROM Events e Order by e.EventDateTime;");

使用 createQuery 方法 java 返回错误:

SEVERE: Local Exception Stack: 
Exception [EclipseLink-8030] (Eclipse Persistence Services - 2.3.0.v20110604-r9504):

org.eclipse.persistence.exceptions.JPQLException
Exception Description: Error compiling the query [Events.findByGameId: SELECT e FROM Events e WHERE e.gameId =

:gameId ORDER BY e.EventDateTime DESC], line 1, column 59: unknown state or association field [EventDateTime] of class [com.jogogestao.entity.Events].
at org.eclipse.persistence.exceptions.JPQLException.unknownAttribute(JPQLException.java:457)
at org.eclipse.persistence.internal.jpa.parsing.DotNode.validate(DotNode.java:88)
at org.eclipse.persistence.internal.jpa.parsing.OrderByItemNode.validate(OrderByItemNode.java:52)
at org.eclipse.persistence.internal.jpa.parsing.OrderByNode.validate(OrderByNode.java:61)
at org.eclipse.persistence.internal.jpa.parsing.ParseTree.validate(ParseTree.java:210)

我尝试按整数类型主要进行排序,并且所有运行正常...但这当然不是我想要的。使用 createNativeQuery 语句运行正常...

Query query = em.createNativeQuery("SELECT * FROM Events Order by EventDateTime;");

唯一的问题是返回对象不是事件类型对象(来自实体),我无法转换为这种类型。

也许问题是 JPA 不支持对日期时间字段进行排序?

我该如何解决这个问题?

我正在使用 Netbeans 7.0.1、Glassfish 3.1.1、MySql 5.5.19 Community Server (GPL) 和 mysql-connector-java-5.1.15-bin.jar。

谢谢!

最佳答案

SELECT e FROM Event e ORDER BY e.eventDateTime
  • 您没有* - 您必须指定您选择的实体
  • 不要在末尾加分号
  • 使用全小写关键字、大写实体名称和小驼峰属性名称
  • 用单数而非复数命名实体(EventEvents)

关于java - 使用 JPA 执行查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com