【问题标题】:Spring Data JPA - How to find by param with underscoreSpring Data JPA - 如何通过带下划线的参数查找
【发布时间】:2018-07-13 17:53:21
【问题描述】:

这是我的模型:

public class Log {

    @Id
    private String id;
    private String project;
    private String test_no;

    // Constructor, getters and setters.
}

如何添加一个findBy 查询,让我可以通过test_no 值查找元素?我已经尝试过这些方法头,但它们不起作用:

List<Log> findByTest_No(String test_no);

我的 STS 报告的错误是:Invalid delivery query!在类型 Log 中找不到属性测试!

List<Log> findByTest_no(String test_no);

我的 STS 报告的错误是:Invalid delivery query!在类型 Log 中找不到属性测试!

List<Log> findByTestno(String test_no);

我的 STS 报告的错误是:无效的派生查询!没有找到类型 Log 的属性 testno!你是说“test_no”吗?

【问题讨论】:

    标签: spring repository spring-data-jpa


    【解决方案1】:

    没有必要使用private String test_no; 你可以使用private String testNo; Spring 自动理解你正在绑定数据库中的test_no 列。你也可以使用

    @Column(name = "test_no")
    private String testNo;
    

    在此更改后,您可以执行问题中提到的查询,而无需任何自定义 sql。

    List<Log> findByTestNo(String testNo);
    

    【讨论】:

      【解决方案2】:

      似乎_ 是一个分隔属性名称的特殊字符

      ...算法可能选择了错误的属性...要解决这种歧义,您可以在方法名称中使用 \_ 来手动定义遍历点...

      Docs

      所以它在Log 类中找不到test 字段。

      尝试使用:

      @Query("select log from Log log where log.test_no = ?1")
      List<Log> findByTestNo(String testNo);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-16
        • 2014-08-17
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        • 2020-04-03
        • 2014-06-20
        • 2016-09-30
        相关资源
        最近更新 更多