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