根据需要从代理对象中删除联接实体JPA

时间:2016-02-08 04:45:22

标签: hibernate jpa proxy jackson lazy-loading

我有一个类实体,它包含其他类实体以获得连接结果。我应该根据需要从代理对象中删除不需要的连接吗?

@Entity
@Table(name = "JOBS")
public class job implements Serializable{

    @Column(name = "id", nullable = true)
    private int id ;

    private String              deliveryConfigXML;

    private String              djobConfigXML;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "date")
    private Date Date;

    @OneToMany(mappedBy = "processedjob")
    private List<Processedjob>  processedjobs;


    @OneToMany(mappedBy = "deliveredjob")
    private List<Deliveredjob>  deliveredjobs;
}

当我从数据库中获取此实体时,它将提供代理对象。然后,通过使用该代理对象,我可以通过延迟加载获得其他实体。

List<DeliveredJob> list = jobs.getDeliveredJobs(); //lazy loading

由于整个回复是通过Java杰克逊库,在某些情况下,我不希望这些已经交付的工作和处理工作,但由于杰克逊,它给出了完整的结果。

我应该如何按需获得结果?如果我在代理对象中将传递的作业设置为null,该怎么办?如果这是一种方式,它是解决这个问题的好方法还是有其他解决方案?

1 个答案:

答案 0 :(得分:0)

您可以尝试取消对象的修改。

if (entity instanceof HibernateProxy) {
    entity = ((HibernateProxy) entity).getHibernateLazyInitializer()
            .getImplementation();
}