java如何忽略@Where hibernate
我有一个实体作者
@Data
@Entity
@DynamicInsert
@Where(clause = "isDeleted=false")
public class Author
还有一本实体书
@Data
@Entity
@DynamicInsert
public class Book {
...
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.EAGER,orphanRemoval = true)
@JoinColumn(name = "author_id", nullable = false )
private Author author;
}
我需要得到所有的书,即使作者被删除了。我使用JpaRepository:
public interface BookRepository extends JpaRepository<Book, Long>, JpaSpecificationExecutor {}
但当我尝试的时候
bookRepository.findAll()
我有一个例外:javax。坚持不懈EntityNotFoundException:找不到id为1的作者
尝试过这个,但对我没有帮助:
public interface BookRepository extends JpaRepository<Book, Long>, JpaSpecificationExecutor {
@Override
@Query(value = "from Book as b where b.author.isDeleted = true")
List<Book> findAll();
我怎样才能避免@where
# 1 楼答案
你试过:
这里
GeneralAuthor
是一个基本数据结构(从当前Author
复制粘贴)Author
重命名为ActiveAuthor
,提供了关于它是什么的更多信息:活动(未删除)作者记录一个新的实体
Author
实体允许您访问任何类型的作者(已删除或未删除),并且应该在映射到Book
中使用这将允许您重用所有数据结构,并在同一作者实体上拥有灵活的视图。注意:
Author
和ActiveAuthor
不声明任何自己的字段