Почему комбинация двух JPQL-запросов, которые работают отдельно, не работает при объединении? - PullRequest
0 голосов
/ 07 июля 2019

В проекте начальной загрузки, использующем hibernate, я хочу создать запрос, который возвращает все действия с датами между датами и ByMethodPaymentId. Класс сущности:

    @Entity
    public class Action {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date;

    @ManyToOne
    @JsonIgnore
    @Valid
    private MethodPayment methodPayment;
    //constructor....getter... setter...

это хранилище к действию:

   @Repository
    public interface ActionRepository extends JpaRepository<Action, Long>{

    // Dont works
    Collection<Action> findByMethodPaymentIdAndByDateBetween(long methodPaymentId,Date startDate, Date endDate );
    // works    
    Collection<Action> findByMethodPaymentId(long methodPaymentId);
    // works
    Collection<Action> findByDateBetween(Date startDate, Date endDate);

Почему последние два запроса работают, но первый, который является комбинацией обоих, не работает?

Ответы [ 2 ]

3 голосов
/ 07 июля 2019

Вы не должны упоминать By снова при использовании JPQL, поэтому метод будет похож на

Collection<Action> findByMethodPaymentIdAndDateBetween(long methodPaymentId,Date startDate, Date endDate );

Попробуйте это.

2 голосов
/ 07 июля 2019

Просто Remove By после And

Изменить

findByMethodPaymentIdAndByDateBetween() 

На

findByMethodPaymentIdAndDateBetween()

Окончательный запрос

Collection<Action> findByMethodPaymentIdAndDateBetween(long methodPaymentId,Date startDate, Date endDate );

Несколько И / ИЛИ

findByFirstParameterAndSecondeParameterORThirdParameter(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...