Spring boot 在JpaRepository中添加两个条件

Spring boot 在JpaRepository中添加两个条件,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我正在尝试使用JpaRepository通过添加两个条件来过滤数据 我已经编写了如下代码 public接口TemplateRepository扩展了JpaRepository{ List findByTemplateNameContains(String templateName);//这工作正常 列出FindBytemplateName和ActiveFlagContains(String templateName,String activeFlag);//我的POC }请尝试下面的JPA查询

我正在尝试使用
JpaRepository
通过添加两个条件来过滤数据

我已经编写了如下代码

public接口TemplateRepository扩展了JpaRepository{
List findByTemplateNameContains(String templateName);//这工作正常
列出FindBytemplateName和ActiveFlagContains(String templateName,String activeFlag);//我的POC

}
请尝试下面的JPA查询

List<Template> findByTemplateNameContainingAndActiveFlagContaining(String templateName, Character activeFlag);
列出FindBytemplateNameContaining和ActiveFlagContaining(String templateName,Character activeFlag);

您的活动标志是一个字符,因此没有必要为活动标志添加包含内容,而是要进行精确匹配,请将方法签名更改为

List<Template> findByTemplateNameContainsAndActiveFlag(String templateName, char activeFlag);// My POC
列出FindBytemplateNameContains和activeFlag(字符串templateName,char activeFlag);//我的POC
我已经测试过它,它将根据它的值将名称和like和activeFlag匹配

我还没有打开实现代码,但是当您向ActiveFlag添加containing时,要搜索的值变成%Y%,它实际上是三个字符,不符合执行条件,因此出现错误,我在这里的类比可能是错误的


如果您也发布“模板”实体类,则会更容易。如果“activeFlag”是单个字符,为什么不能使用“char”表示它?方法参数的类型必须与数据库中的类型匹配。由于您有一个
char
参数,您也应该使用
char
作为参数。谢谢Shailesh…我将对此进行测试并接受您的答案。一个问题-对于一个表,这看起来不错,但是一个查询涉及多个表如何?是否有最佳方法的指针?如果您的实体使用适当的主键-外键进行了良好定义,那么它将自身带来数据,但是如果您想加入多个表,例如为报表带来数据,JPA查询最适合,请阅读更多@