我们的一个实体是使用@Where注释来定义来处理“软删除”。
@Entity
@Where(clause="user_type_cd != 'X'")
public class User {
...
现在,我们意识到有时候,我们仍然希望找到这样的实体。不幸的是,@ Where注释按设计工作,因此我们在JPARepository中定义的查找器无法找到已删除的用户。
例如,
@Repository("userRepo")
public interface UserRepository extends JpaRepository<User, Long> {
User findByLoginId(String login);
}
如果用户已被删除,则如果user_type_cd等于'X',则findByLoginIs()方法将不返回用户。
然而,有时候,我们仍然想找到这样的用户,所以我想移动
@Where(clause="user_type_cd != 'X'")
从实体到存储库的注释。这样,我不必更新存储库中的所有方法,它会自动将此标准添加到所有查找程序。然后,我可以创建另一个存储库,它将找到所有用户而不考虑软删除。
然而,我无法弄清楚我可以用来让所有发现者自动附加的确切方法
clause="user_type_cd != 'X'"
存储库的所有方法的标准,而不必为每个finder方法显式编写自定义@Query(“...和user_type_cd!='X'”)。
因此,简而言之,我正在寻找所有自动生成的findBy和这样的方法,将user_type_cd!='X'附加到每个生成的查找中。
有关如何在不使用自定义@Query注释的情况下完成此任务的任何想法?
答案 0 :(得分:0)
我相信您正在寻找的是其中之一:
其中一个都可以通过简单的Google搜索获得大量信息。这是一个有用的spring.io blog,其中包含有关两者的详细信息以及如何在JpaRepository中使用它们。