我有两个业务对象,它们之间的关系太多。我正在使用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();
}
您需要将注释移至getter方法:
@JsonIgnore
public List <PolEvent> getEventList() {
return eventList;
}
我有一个应用程序(Spring 4 MVC Hibernate 4 MySQL Maven集成示例使用注释),使用基于注释的配置将Spring与Hibernate集成。 我有这个实体: 和这个: 服务中的这种方法: 在控制器中: 但我得到了这个错误:
我的版本是: SpringFramework 4.2.4.发布 Hibernate4.3.11.final 杰克逊2.7.4 杰克逊类型2.7.1
我有下一个错误: 但是当我试图调用这个方法时,我在在上调用时也会出现同样的异常。我已经检查了事务管理器,它配置正确,事务在这一步中存在。此外,我已经检查了大量与此异常相关的stackoverflow的答案,但没有任何有用的。 它的原因是什么?
错误被抛出在行hibernate.initialize(students)上;或者在下一行,如果没有,在学生集上,标题中有错误。任何帮助(不仅仅是将fetch类型设置为Eager)都将不胜感激。
我是spring的新手,在从一个与其他表有关系的表中获取记录时,会出现这个懒洋洋的初始化错误。我在网上读了很多,但没有找到一个合适的方法。 表1: 错误: 将获取对象转换为JSON时获取异常。我发现这是由于代理对象返回由于fetch类型lazy(我希望保持原样)。
你知道为什么jackson不能将这个集合映射到json格式吗?