@Query (Spring data / JPA) с логическим значением «где» - PullRequest
0 голосов
/ 09 ноября 2018

Класс SampleRepository.java имеет запрос, подобный приведенному ниже:

@Query("select eq from EmailQueue eq where eq.inquiry in (select issue.id from Inquiry issue  where issue.id = eq.inquiry and systimestamp   >= eq.sendDate + (1/24) * ?3  ) and "
            + " systimestamp   >= eq.sendDate + (1/24) * ?2 and eq.sent = True and "            
            + " eq.emailType.id = ?1  "
            + "  order by eq.sendDate asc")

Ошибка, которую я получаю:

Caused by: java.sql.SQLSyntaxErrorException: ORA-00904: "TRUE": invalid identifier

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]

Можете ли вы дать мне знать, как указать eq.sent = True в @query? Я старался eq.sent = 1 также, это не работает.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Решено следующим обходным решением:

 @Query("select eq from EmailQueue eq where eq.inquiry in (select issue.id from Inquiry issue  where issue.id = eq.inquiry and systimestamp   >= eq.sendDate + (1/24) * ?3  ) and "
                + " systimestamp   >= eq.sendDate + (1/24) * ?2 and eq.sent = ?4 and "          
                + " eq.emailType.id = ?1  "
                + "  order by eq.sendDate asc")
List<EQueue> findEmailSentDetails(long type, int days1, int days2,boolean emailSent);

вместо использования "eq.sent = true" передайте истину в качестве аргумента, например eq.sent =? 4

0 голосов
/ 09 ноября 2018

Вы можете использовать is вместо =:

@Query("select eq from EmailQueue eq where eq.inquiry in (select issue.id from Inquiry issue  where issue.id = eq.inquiry and systimestamp   >= eq.sendDate + (1/24) * ?3  ) and "
            + " systimestamp   >= eq.sendDate + (1/24) * ?2 and eq.sent is True and "            
            + " eq.emailType.id = ?1  "
            + "  order by eq.sendDate asc")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...