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);
}
我有一个 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);
}