Spring 带外键的数据 JPA @Query:参数不匹配

Spring Data JPA @Query with foreign key: Parameter not matched

我有一个 table "Signal",带有 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,它将获得硬编码值。如果我尝试查询 "volume",它工作正常。

我收到这个错误:

Blockquote nested exception is java.lang.IllegalArgumentException: Parameter value [1] did not match expected type

我建议您省略查询,让 spring 数据为您生成一个。所以你的情况可能会以某种方式表示(如果定义了正确的关系映射):

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

如果您提供更多信息,例如您的实体 - 您可以获得更多帮助。

您可以使用 Spring 数据生成基础查询,如下所示:

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

或者您可以使用此 return 类型和参数编写查询:

public interface SignalRepository extends JpaRepository<Signal, Integer> {
    @Query("select s from Signal s where s.object = :id")
    List<Signal> findSignalByObjectId(@Param("id") Integer objectId);
}