我有两个关系太多的业务对象。我正在使用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();
}
答案 0 :(得分:3)
您需要将注释移动到getter方法:
@JsonIgnore
public List <PolEvent> getEventList() {
return eventList;
}