我有一个表“ 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
,它将获得硬编码值。如果我尝试查询“音量”,效果很好。
我收到此错误:
Blockquote 嵌套异常是java.lang.IllegalArgumentException:参数值[1]与预期类型不匹配
答案 0 :(得分:1)
我建议您省略查询,并让spring数据为您生成一个。因此,您的案件可能以这种方式表示(在定义了正确的关系映射的情况下):
public interface SignalRepository extends JpaRepository<Signal, Integer> {
Optional<Signal> findByObject(YourObjectType object);
}
如果您提供更多信息,例如您的实体-您可以获得更多帮助。
答案 1 :(得分:1)
您可以使用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);
}