3
我成功地爲我的應用程序的實體實施了軟刪除(又名刪除標誌)。但是,我還有一個問題。 我已經用findAll和count方法編寫了一個自定義的JPARepository,用於過濾掉已刪除的方法。我這樣做與規格:JPA規範:篩選子實體
softDeleteSpecification = new Specification<T>() {
@Override
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.or(cb.isNull(root.get(DELETED_FIELD_NAME)), cb.equal(root.<T>get(DELETED_FIELD_NAME), false));
}
};
如果實體有例如,它們也軟刪除實體的一對多子列表,沒有被過濾此列表,因爲查詢不被其運行的倉庫。
我的問題:我可以修改上面的規範,以便軟刪除的孩子被過濾掉嗎? 另一種方法是使用反射篩選孩子(在查詢後手動篩選),但那不會是高性能的。
我們已經嘗試過。額外的where子句被添加到在實體本身上執行的查詢中,查詢在父類中通過預先獲取執行,而不是使用延遲獲取的查詢。 附註:我們試圖避免Hybernate特定的命令,因爲我們不需要任何直接的依賴關係。這就是爲什麼我建立了一個定製的軟刪除解決方案,而不是使用where子句。 雖然where子句是個好主意。 – 2015-01-21 12:24:37