Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
581 views
in Technique[技术] by (71.8m points)

java - failed to lazily initialize a collection of role in ManyToMany relationship despite using JsonIgnore

I have two business objects having many too many relationships. I am using a REST service to call the DAO method given below and get a list of political indicators for a political event. However though the piList in DAO successfully gives me the list of Political Indicators but it still gives me an exception

Failed to lazily intialize a collection of role...

through reference chain:

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

I have used @JsonIgnore in the Political Indicator class against the political event property but still the lazy exception happens.

Where am I going wrong?

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 Layer Code

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();
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to move the annotation to the getter method:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...