一尘不染

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

hibernate

我有两个业务对象,它们之间的关系太多。我正在使用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();
}

阅读 355

收藏
2020-06-20

共1个答案

一尘不染

您需要将注释移至getter方法:

@JsonIgnore
public List <PolEvent> getEventList() {
    return eventList;
}
2020-06-20