2016-11-23 4 views
1

В моем JPA интерфейс, у меня есть следующий код:Java весна: неожиданный маркер: *

public interface ConsultationRequestRepository extends CrudRepository<ConsultationRequest, Integer> { 

    @Query("select * from ConsultationRequest where status = ?1") 
    List<ConsultationRequest> findRequestsByStatus(ConsultationStatus status); 
} 

, но он жалуется с ошибкой:

antlr.NoViableAltException: unexpected token: * 

, что неправильно в этом коде?

+1

Вы должны использовать HQL синтаксис запросов, не SQL-запросы к аннотации @Query. Предполагая, что ConsultationRequest является сущностью, запрос hql может выглядеть примерно так: «SELECT cr FROM ConsultationRequest cr WHERE ...». Вы можете посмотреть документацию spring-jpa здесь http://docs.spring.io/spring-data/jpa/docs/current/reference/html/, а также у вас есть ссылки на документацию в этой статье stackoverflow: http: // stackoverflow.com/questions/6678591/create-query-in-hibernate. Надеюсь, что это поможет –

ответ

4

Попробуйте изменить запрос следующим образом:

@Query("select c from ConsultationRequest c where c.status = ?1") 

Или вы можете использовать собственный запрос:

@Query("select * from ConsultationRequest where status = ?1", nativeQuery = true) 

Подробнее об использовании @Query аннотацию вы можете найти here

2

Никогда не забуду что JPA не является SQL, даже если есть аналогичное выражение.
Вы хотите, чтобы получить все записи и поместить его в POJO или список, так что вы должны указать его в вашем выбрать положения, например:

public interface ConsultationRequestRepository extends CrudRepository<ConsultationRequest, Integer> { 

    @Query("select c from ConsultationRequest c where status = ?1") 
    List<ConsultationRequest> findRequestsByStatus(ConsultationStatus status); 
} 
Смежные вопросы