java - 带有外键 : Parameter not matched 的 Spring Data JPA @Query

标签 java spring hibernate spring-data-jpa jpql

我有一个包含 id、volume 和 object_id 列的“Signal”表。

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 nested exception is java.lang.IllegalArgumentException: Parameter value [1] did not match expected type

最佳答案

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

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

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

关于java - 带有外键 : Parameter not matched 的 Spring Data JPA @Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54014183/

相关文章:

mysql - Hibernate:外键需要是主键

java - 删除行是数据库

mysql - 如何在hibernate中使用带有注释的字符串作为主键

java - 将数字的数字转换为单词

java - 正则表达式多重负前瞻

java - 在 Spring Boot 中正确使用 @Async、@Scheduled 和线程池

java - Spring security - 从自定义登录页面调用自定义身份验证提供程序

java - 如果一个 Activity 实现了回调并且该引用被传递给另一个线程中的网络调用并且屏幕被旋转,这是否是内存泄漏?

java - 如何从资源文件夹中正确获取文件

java - spring mvc 中不允许 405 方法,但其他操作和 Controller 工作正常?