Spring Data JPA @Query с внешним ключом: параметр не соответствует - PullRequest
0 голосов
/ 03 января 2019

У меня есть таблица «Сигнал» со столбцами id, volume и object_id.

Object_id является внешним ключом. Мне нужно получить каждый сигнал, который имеет определенный object_id.

Я пытаюсь использовать этот запрос

public interface SignalRepository extends JpaRepository<Signal, Integer> {
    @Query("select s from Signal s where s.object = ?1")
    Optional<List<Signal>> findSignalByObjectId(Integer objectId);

}

Это не работает. Если я изменю "?1" на 1, получится жестко закодированное значение. Если я пытаюсь запросить «объем», он работает нормально.

Я получаю эту ошибку:

Blockquote вложенное исключение: java.lang.IllegalArgumentException: значение параметра [1] не соответствует ожидаемому типу

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Вы можете использовать данные Spring для генерации базового запроса следующим образом:

public interface SignalRepository extends JpaRepository<Signal, Integer> {
    List<Signal> findSignalByObjectId(Integer objectId);
}

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

public interface SignalRepository extends JpaRepository<Signal, Integer> {
    @Query("select s from Signal s where s.object = :id")
    List<Signal> findSignalByObjectId(@Param("id") Integer objectId);
}
0 голосов
/ 03 января 2019

Я бы порекомендовал вам опустить запрос, и пусть данные пружины сгенерируют его для вас.Таким образом, ваш случай может быть представлен как-то так (в случае определения правильного отображения отношений):

public interface SignalRepository extends JpaRepository<Signal, Integer> {
    Optional<Signal> findByObject(YourObjectType object);
}

Если вы предоставите больше информации, например, о ваших сущностях - вы можете получить больше помощи.

...