Spring Data JPA - 如何使用下划线参数查找

3

以下是我的模型:

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报告的错误是:无效的传递查询!在Log类型中未找到test属性!
List<Log> findByTest_no(String test_no);

我STC报告的错误是:无效的交付查询!在类型日志中找不到属性测试!
List<Log> findByTestno(String test_no);

我STS报告的错误是:无效的派生查询!类型为Log的属性testno未找到!你是否指的是'test_no'?
2个回答

4
似乎"_"是一个特殊字符,用于分隔属性名称。如果算法选择了错误的属性,则可以在方法名称中使用“\_”手动定义遍历点以解决歧义。参考文档:Docs
因此,它无法在Log类中找到test字段。请尝试使用:
@Query("select log from Log log where log.test_no = ?1")
List<Log> findByTestNo(String testNo);

4

没有必要使用private String test_no;,而是可以使用private String testNo;。Spring会自动理解你正在绑定数据库中的test_no列。此外,您还可以使用以下方式:

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

在进行这些更改后,您可以执行与您的问题中提到的查询相对应的命令,无需使用任何自定义SQL。

List<Log> findByTestNo(String testNo);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接