尽管使用了JsonIgnore,但在多对多关系中惰性初始化角色集合失败



我有两个业务对象,它们有太多太多的关系。我使用一个REST服务来调用下面给出的DAO方法,并获取一个政治事件的政治指标列表。然而,尽管DAO中的piList成功地给了我政治指标列表,但它仍然给了我一个例外

Failed to lazily intialize a collection of role...

通过引用链:

org.hibernate.collection.internal.PersistentBag[0]----->PolIndicator.piList.role
org.jboss.resteasy.spi.writerException
org.codehaus.jackson.map.JsonmappingException"

我在Political Indicator类中对政治事件属性使用了@JsonIgnore,但仍然会发生惰性异常。

我哪里错了?

PolEvent {
    @Id
    @Column(name="SEQ_EVENT_ID")
    private BigDecimal id;
    @Column(name="EVENT_NAME")
    private String eventName;
    @ManyToMany
    @JoinTable(
        name="POL_LINK_INDCTR"
        joinColumns={@JoinColumn(name="SEQ_EVENT_ID")},
        inverseJoinColumns=@JoinColumn(name="SEQ_PI_ID")
    )
    private List <PolIndicator> piList;
}

PolIndicator {
    @Id
    @Column(name="SEQ_PI_ID")
    private BigDecimal id;
    @Column(name="POL_IND_NAME")
    private String piName;
    @ManyToMany(mappedBy="piList")
    @JsonIgnore
    private List <PolEvent> eventList; 
}

DAO层代码

public List <PolIndicator> getPiList (String eventId) {
    Criteria criteria = session.createCriteria(PolEvent.class);
    criteria.add(Restrictions.eq("id",id);
    PolEvent polEvent = new PolEvent();
    polEvent=criteria.uniqueResult();
    piList = polEvent.getPiList();
    return piList();
}

您需要将注释移动到getter方法:

@JsonIgnore
public List <PolEvent> getEventList() {
    return eventList;
}

最新更新