Ошибка при выполнении запроса с использованием JPA - PullRequest
1 голос
/ 11 января 2012

Я пытаюсь отсортировать набор результатов с помощью оператора SQL Order, используя JPA, для типа данных столбца datetime с этой строкой, в базе данных 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)

Я пробовал сортировать по целочисленному типу primary и все работает нормально ... но это, конечно, не то, что я хочу.Используя createNativeQuery, оператор выполняется нормально ...

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

Единственная проблема состоит в том, что возвращаемый объект не является объектом типа Events (из сущности), и я не могу преобразовать в этот тип.

Может быть, проблема в том, что JPA не поддерживает сортировку по полям даты и времени?

Как обойти это?

Я использую Netbeans 7.0.1, Glassfish 3.1.1,MySql 5.5.19 Сервер совместной работы (GPL) и mysql-connector-java-5.1.15-bin.jar.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 января 2012

Сообщение ясно: у вас нет EventDateTime сопоставленного свойства (или поля, если поля сопоставлены напрямую) в событиях сущности.Если вы уважаете соглашения Java, поле / свойство должно называться eventDateTime, а не EventDateTime.

0 голосов
/ 11 января 2012
SELECT e FROM Event e ORDER BY e.eventDateTime
  • у вас нет * - вы должны указать выбранную вами сущность
  • не ставить точку с запятой в конце
  • использовать всеключевые слова в нижнем регистре, имена объектов в верхнем регистре и имена свойств в нижнем регистре
  • имя объекта в единственном, а не во множественном числе (Event против Events)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...