Java 尽管使用了JsonIgnore,但未能在多人关系中延迟初始化角色集合

Java 尽管使用了JsonIgnore,但未能在多人关系中延迟初始化角色集合,java,hibernate,jackson,resteasy,lazy-initialization,Java,Hibernate,Jackson,Resteasy,Lazy Initialization,我有两个业务对象,它们有太多的关系。我使用REST服务调用下面给出的DAO方法,并获取政治事件的政治指标列表。然而,虽然道家成功地给了我政治指标清单,但它仍然给了我一个例外 未能延迟初始化角色集合… 通过参考链: org.hibernate.collection.internal.PersistentBag[0]----->PolIndicator.piList.role org.jboss.resteasy.spi.writerException org.codehaus.jackson

我有两个业务对象,它们有太多的关系。我使用REST服务调用下面给出的DAO方法,并获取政治事件的政治指标列表。然而,虽然道家成功地给了我政治指标清单,但它仍然给了我一个例外

未能延迟初始化角色集合…

通过参考链:

org.hibernate.collection.internal.PersistentBag[0]----->PolIndicator.piList.role
org.jboss.resteasy.spi.writerException
org.codehaus.jackson.map.JsonmappingException"
我在Political Indicator类中针对Political event属性使用了
@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; 
}
PolEvent{
@身份证
@列(name=“SEQ\u EVENT\u ID”)
私有双十进制id;
@列(name=“事件名称”)
私有字符串eventName;
@许多
@可接合(
name=“POL\u LINK\u INDCTR”
joinColumns={@JoinColumn(name=“SEQ_EVENT_ID”)},
inverseJoinColumns=@JoinColumn(name=“SEQ\u PI\u ID”)
)
私人名单盗贼;
}
极化指示器{
@身份证
@列(name=“SEQ_PI_ID”)
私有双十进制id;
@列(name=“POL_IND_name”)
私有字符串piName;
@许多(mappedBy=“piList”)
@杰索尼奥雷
私有列表事件列表;
}
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();
}
public List getPiList(字符串eventId){
条件=session.createCriteria(PolEvent.class);
标准。添加(限制。等式(“id”,id);
PolEvent PolEvent=新的PolEvent();
polEvent=criteria.uniqueResult();
piList=polEvent.getPiList();
返回piList();
}

您需要将注释移动到getter方法:

@JsonIgnore
public List <PolEvent> getEventList() {
    return eventList;
}
@JsonIgnore
公共列表getEventList(){
返回事件列表;
}

由于不清楚hibernate如何触发json操作,因此完整的stacktrace可以帮助您完全删除事件列表会发生什么?很抱歉,Alex的回复太晚。我工作的环境中,internet访问因安全限制而受到严格限制。我可以通过删除@JsonIgnore来解决问题。当我使用@JsonIgno时re,该文件已从我的json中删除!有什么解决方案吗?当我使用@JsonIgnore时,该字段总是被省略,正如Romeo所说,任何解决方案都是这样的
@JsonIgnore
。你应该问一个新问题,描述你得到的行为和你想要的行为,包括源代码。