Java 验证Spring Jpa查询中参数的最小长度

Java 验证Spring Jpa查询中参数的最小长度,java,validation,spring-data-jpa,Java,Validation,Spring Data Jpa,我们有一个数据对象Foo,它有一个字符串属性栏,还有一个jpa存储库,它有一个按条查找Foo的方法: @Entity @Table(name = "FOO") public class Foo { @Id @GeneratedValue private Long id; @Column(name = "BAR", length = 16, nullable = false) private String bar; public String

我们有一个数据对象Foo,它有一个字符串属性栏,还有一个jpa存储库,它有一个按条查找Foo的方法:

@Entity
@Table(name = "FOO")
public class Foo {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "BAR", length = 16, nullable = false)
    private String bar;

    public String getBar() {
        return bar;
    }

    public void setBar(String bar) {
        this.bar = bar;
    }
}


public interface FooJpaRepository extends JpaRepository<Foo, Long> {

    @Transactional(propagation = Propagation.REQUIRED, readOnly = true)
    List<Foo> findByBar(String bar);
}
@实体
@表(name=“FOO”)
公开课Foo{
@身份证
@生成值
私人长id;
@列(name=“BAR”,长度=16,可空=false)
私人弦杆;
公共字符串getBar(){
返回杆;
}
公共空心立根杆(弦杆){
这个.bar=bar;
}
}
公共接口FooJpaRepository扩展了JpaRepository{
@事务性(传播=propagation.REQUIRED,只读=true)
列表findByBar(字符串栏);
}
此查询用于多个位置

我们现在希望在保存到数据库之前对bar的值进行散列,这会增加字段的长度。我将向Foo类添加一个
@PrePersist
方法,在保存之前检查条的长度。但是,我还想检查
findByBar
方法中bar参数的长度,以便在其他地方使用时,其他开发人员将收到警告,注意他们使用的是未剪切的值而不是哈希值


在不创建JpaRepository实现的情况下,这是可能的吗

如果您使用的是Spring Boot,则可以使用验证:

首先用@Validate注释repo,然后对方法参数使用任何Bean验证注释

例如:

@Validate
public interface FooJpaRepository extends JpaRepository<Foo, Long> {

    @Transactional(propagation = Propagation.REQUIRED, readOnly = true)
    List<Foo> findByBar(@Size(max = 16) String bar);
}
@Validate
公共接口FooJpaRepository扩展了JpaRepository{
@事务性(传播=propagation.REQUIRED,只读=true)
列出findByBar(@Size(max=16)字符串条);
}

谢谢你的指点!该功能是否仅适用于spring boot?我们现在不使用它,我不知道。试试看。