我必须给两个JPA实体
@Where( clause = "is_deleted = 0" )
public class Request{
@OneToOne( mappedBy = "request",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY )
private RequestRegistartion requestRegistartion;
}
public class RequestRegistartion {
@OneToOne
@NotNull
private Request request;
}
当我从RequestRegistartion
加载RequestRegistartionRepository
时,我需要加载所有映射的Request
甚至请求is_deleted=1
。
有没有办法忽略仅RequestRegistartionRepository
个采石场的条件
答案 0 :(得分:1)
您让休眠模式从应用程序中隐藏软删除的实体。
自从您采用了@Where( clause = "is_deleted = 0" )
这种方法以来,就休眠而言,它们已经死了,它永远也不会带回来。
异常是您编写本机sql查询,选择列并自己映射的地方。就休眠而言,它们不受管理。
您不要让休眠将软删除的实体视为已删除,应用程序会对其进行处理
就休眠而言,您的软删除是对实体的更新,它将带来所有实体。
因此,在不希望使用它们的情况下,您可以覆盖spring数据存储库方法以提供查询@Query("select e from Request r where r. isDeleted =true")
,或者检索所有内容然后在内存中进行过滤