加载映射的对象JPA时如何忽略条件

时间:2020-07-03 03:27:17

标签: hibernate jpa spring-data-jpa

我必须给两个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个采石场的条件

1 个答案:

答案 0 :(得分:1)

您只能执行以下一项操作,并且不能混合使用它们。

  • 您让休眠模式从应用程序中隐藏软删除的实体。

    自从您采用了@Where( clause = "is_deleted = 0" )这种方法以来,就休眠而言,它们已经死了,它永远也不会带回来。

    异常是您编写本机sql查询,选择列并自己映射的地方。就休眠而言,它们不受管理。

  • 您不要让休眠将软删除的实体视为已删除,应用程序会对其进行处理

    就休眠而言,您的软删除是对实体的更新,它将带来所有实体。

    因此,在不希望使用它们的情况下,您可以覆盖spring数据存储库方法以提供查询@Query("select e from Request r where r. isDeleted =true"),或者检索所有内容然后在内存中进行过滤