Java 验证Spring Jpa查询中参数的最小长度
我们有一个数据对象Foo,它有一个字符串属性栏,还有一个jpa存储库,它有一个按条查找Foo的方法: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
@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?我们现在不使用它,我不知道。试试看。