Ale*_*sky 6 spring jpql spring-data spring-data-jpa
我们的实体之一是使用 @Where 注释定义的,以处理“软删除”。
@Entity
@Where(clause="user_type_cd != 'X'")
public class User {
...
Run Code Online (Sandbox Code Playgroud)
现在,我们意识到有时我们仍然想找到这样的实体。不幸的是,@Where 注释按设计工作,因此我们在 JPARepository 中定义的查找器无法查找已删除的用户。
例如,
@Repository("userRepo")
public interface UserRepository extends JpaRepository<User, Long> {
User findByLoginId(String login);
}
Run Code Online (Sandbox Code Playgroud)
如果用户已被删除,则如果 user_type_cd 等于 'X',则 findByLoginIs() 方法将不会返回用户。
但是,有时我们还是想找到这样的用户,所以我想把
@Where(clause="user_type_cd != 'X'")
Run Code Online (Sandbox Code Playgroud)
从实体到存储库的注释。这样,我不必更新存储库中的所有方法,它会自动将此标准添加到所有查找器。然后,我可以创建另一个存储库,该存储库将在不考虑软删除的情况下找到所有用户。
但是,我无法弄清楚可以用来使所有查找器自动附加
clause="user_type_cd != 'X'"
Run Code Online (Sandbox Code Playgroud)
存储库的所有方法的标准,而我不必为每个 finder 方法显式编写自定义 @Query("... and user_type_cd != 'X'") 。
因此,简而言之,我正在寻找所有自动生成的 findBy 以及将 user_type_cd != 'X' 附加到生成的每个 find 的方法。
关于如何在不使用自定义 @Query 注释的情况下完成此操作的任何想法?
| 归档时间: |
|
| 查看次数: |
1032 次 |
| 最近记录: |