尽管使用了JsonIgnore,但未能懒惰地初始化ManyToMany关系中的角色集合

时间:2014-05-13 10:18:23

标签: java hibernate jackson resteasy lazy-initialization

我有两个关系太多的业务对象。我正在使用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"

我在政治指标类中使用@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();
}

1 个答案:

答案 0 :(得分:3)

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

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