我們有一個數據對象 Foo,它有一個字符串屬性 Bar,還有一個 jpa 存儲庫,它有一個按 Bar 查找 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);}此查詢在多個地方使用。我們現在希望在保存到數據庫之前對 bar 的值進行哈希處理,這會增加字段的長度。我將@PrePersist在 Foo 類中添加一個方法來檢查 bar 的長度,然后再保存它。但是,我還想檢查findByBar方法中 bar 參數的長度,以便當在其他地方使用它時,其他開發人員會被提醒他們使用的是未散列值而不是散列值。如果不創建 JpaRepository 的實現,這可能嗎?
1 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
如果您使用的是 Spring Boot,則可以使用驗證:
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-validation
首先使用 @Validate 對 repo 進行注釋,然后在方法參數上使用任何 Bean Validation Annotation。
例如:
@Validate
public interface FooJpaRepository extends JpaRepository<Foo, Long> {
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
List<Foo> findByBar(@Size(max = 16) String bar);
}
添加回答
舉報
0/150
提交
取消