我正在尝试在Mysql数据库上使用带有此字符串的日期时间列数据类型的SQL语句Order by JPA对结果集进行排序:
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)
我尝试按整数类型primary排序,所有运行都正常......但这不是我想要的。 使用createNativeQuery语句运行正常......
Query query = em.createNativeQuery("SELECT * FROM Events Order by EventDateTime;");
唯一的问题是返回对象不是Events类型对象(来自实体),我无法转换为此类型。
问题可能是JPA不支持对datetime字段进行排序吗?
我怎样才能解决这个问题?
我正在使用Netbeans 7.0.1,Glassfish 3.1.1,MySql 5.5.19社区服务器(GPL)和mysql-connector-java-5.1.15-bin.jar。
谢谢!
答案 0 :(得分:0)
SELECT e FROM Event e ORDER BY e.eventDateTime
*
- 您必须指定您选择的实体Event
vs Events
)答案 1 :(得分:0)
消息很明确:实体事件中没有EventDateTime
映射属性(或字段,如果字段直接映射)。如果您遵守Java约定,则字段/属性应命名为eventDateTime
,而不是EventDateTime
。