我有两个业务对象,它们之间的关系太多。我正在使用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在政治指标类中使用过针对政治事件属性的方法,但是仍然出现了异常例外。
@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; }