Не удалось извлечь ResultSet при использовании Native Query в Spring Jpa - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь получить истину или ложь с некоторым условием сравнения, используя собственный запрос Spring JPA. Но я получил следующее исключение:

could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Я пытаюсь задать следующий запрос:

SELECT case when ABS(am_savedagent.AGENT_VERSION)< 1.8 then 'true' else 'false' end as bool 
FROM am_savedagent where am_savedagent.BOX_ID="ots-JIO6Yn0jZbxs";

Мой репозиторий

public interface SavedAgentRepository extends JpaRepository<SavedAgentDetails, String>, JpaSpecificationExecutor<SavedAgentDetails> {
    @Query(value = "SELECT case when ABS(SavedAgentDetails.agentVersion)< ?1 then 'true' else 'false' end as bool FROM SavedAgentDetails where SavedAgentDetails.boxId=?2", nativeQuery = true)
    public Optional<List<Object>> findByAgentVersionAndBoxId(String currentVersion, String boxid);
}

Я не могу найти ошибки Comming. Пожалуйста, помогите мне, кто-нибудь.

1 Ответ

1 голос
/ 04 мая 2020

Поскольку вы используете собственный запрос = true, именно поэтому вам необходимо использовать имя таблицы, а не имя сущности внутри запроса.

Попробуйте это ->

public interface RegisterAgentRepository extends JpaRepository<RegisterAgentDetails, String>, JpaSpecificationExecutor<RegisterAgentDetails> {
    @Query(value = "SELECT case when ABS(am_registeragent.AGENT_VERSION)< ?1 then 'true' else 'false' end as bool FROM am_registeragent where am_registeragent.SAASBOX_ID=?2", nativeQuery = true)
    public Optional<List<Object>> findByAgentVersionAndSaasboxId(String currentVersion, String saasboxid);
}
...