您好我正在使用Spring Data JPA并希望使用方法名称中的功能生成查询。我在DB中有一个只有0和1值的字段。我想获取有效值为1的所有数据。 这是一个常量值,所以我不想将此值作为方法参数传递。
请建议相同的方法。
示例:
我有一个实体EmailRef
public class EmailRef {
/* other vareialbe */
@Column(name="is_active") /* this is the field which value is 0 and 1 in DB*/
private Integer active;
/* setter getter method */
}
这是我想要编写方法的存储库,该方法将获取active为1的所有数据;
public interface EmailRefRepositry extends JpaRepository<EmailRef, Long> {
@Query("select * from email_reference where is_active=1") /* this is the query I want to convert into method*/
List<EmailRef> findByActive(); /*I want to write method like that which will fetch all data form table where active field value is 1*/
}
我被困在不断的谷值请建议
由于 Sudhanshu
答案 0 :(得分:1)
如果你可以将整数改为布尔值,你可能会做类似的事情:
在您的实体中:
private Boolean active;
在你的回购中:
List<EmailRef> findByActiveIsTrue();
答案 1 :(得分:0)
试试这个:
public interface EmailRefRepositry extends JpaRepository<EmailRef, Long> {
@Query("select e from EmailRef e where e.active=1")
List<EmailRef> findOnlyActiveWithQuery();
default List<EmailRef> findOnlyActive() {
findByActive(1);
}
default List<EmailRef> findNotActive() {
findByActive(0);
}
List<EmailRef> findByActive(Integer active);
}
答案 2 :(得分:0)
我不认为你可以使用Spring JPA魔术做你想做的事情,从方法名称派生查询(除非你能够像@ kimy82在他们的解决方案中建议的那样)。当然,您可以在存储库方法中使用@Query注释。但是,您定义的那个不会起作用,因为它是一个本机查询而您没有指定它。以下是对Query注释的两种可能修复方法,尽管我建议使用第一种方法:
@Query("select e from EmailRef e where e.active=1")
或
@Query("select * from email_reference where is_active=1", nativeQuery=true)