Невозможно преобразовать SQL в JPQL - PullRequest
1 голос
/ 14 мая 2019

Я пытаюсь преобразовать следующий Oracle SQL (который работает)

select sum(ct.some_count) from TABLE1 mc
  inner join TABLE2 xref on mc.cnum = xref.cnum
  inner join TABLE3 ct on xref.srt = ct.srt
  inner join TABLE4 pc on pc.id = xref.id
  where mc.CARD_NO = '111' and pc.code = '222';

Следующим JPQL.

@Query("SELECT sum(ct.someCount) FROM Table1Entity mc " +
        "inner join TABLE2Entity xref on mc.cnum = xref.cnum " +
        "inner join TABLE3Entity ct on xref.srt = ct.srt " +
        "inner join TABLE4Entity pc on pc.id = xref.id " +
        "where mc.CARD_NO = :cardNumber and pc.code = :code")
long getTotalCount(@Param("cardNumber") String cardNumber, @Param("code") String code);

Я получаю следующее исключение.

QuerySyntaxException: неожиданный токен

Могу ли я получить помощь в том, что я делаю неправильно?

Я использую Spring, и это мой репозиторий для этого запроса.

@Repository(value = "someCountRepository")
public interface SomeCountRepository extends JpaRepository<Table3Entity, TableId> {
        @Query("SELECT sum(ct.someCount) FROM Table1Entity mc " +
        "inner join TABLE2Entity xref on mc.cnum = xref.cnum " +
        "inner join TABLE3Entity ct on xref.srt = ct.srt " +
        "inner join TABLE4Entity pc on pc.id = xref.id " +
        "where mc.CARD_NO = :cardNumber and pc.code = :code")
        long getTotalCount(@Param("cardNumber") String cardNumber, @Param("code") String code);
}

1 Ответ

1 голос
/ 14 мая 2019
@Query("SELECT sum(ct.someCount) FROM Table1Entity mc " +
        "inner join TABLE2Entity xref on mc.cnum = xref.cnum " +
        "inner join TABLE3Entity ct on xref.srt = ct.srt " +
        "inner join TABLE4Entity pc on pc.id = xref.id " +
        "where mc.CARD_NO = :cardNumber and pc.code = :code",
        nativeQuery = true) // set native query to true
long getTotalCount(@Param("cardNumber") String cardNumber, @Param("code") String code);

Поскольку вы копируете запрос именно из Oracle SQL, который не является JPQL, вы должны объявить его как собственный запрос.

Ссылки: Spring Data JPA @ Query #2.2.Native

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