Java Stakover流错误,Jackson应用于JPA实体以生成JSON

Java Stakover流错误,Jackson应用于JPA实体以生成JSON,java,json,jpa-2.0,one-to-many,yasson,Java,Json,Jpa 2.0,One To Many,Yasson,我有一个JPA代码与OneToMany关系。客户有一个要签出的项目列表。但是,代码会继续生成StackOverflowerError 有一次,我通过应用@JsonIgnore解决了这个问题,同时从客户实体获取列表。但即使这样似乎也不再有效 在Customer类中: @OneToMany(mappedBy = "customer", orphanRemoval = true) @JsonIgnore private List<Item> items; @ManyToOne(fetch

我有一个
JPA
代码与
OneToMany
关系。
客户
有一个要签出的
项目列表。但是,代码会继续生成
StackOverflowerError

有一次,我通过应用
@JsonIgnore
解决了这个问题,同时从客户实体获取
列表。但即使这样似乎也不再有效

Customer
类中:

@OneToMany(mappedBy = "customer", orphanRemoval = true)
@JsonIgnore
private List<Item> items;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CUSTOMER_ID", nullable = false)
private Customer customer;
@Path("customers")
public class CustomerRest {

    @Inject
    NewSessionBean newSessionBean;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getAllCustomers() {
        return newSessionBean.getCustomers();
    }
}
CustomerRest
class:

@OneToMany(mappedBy = "customer", orphanRemoval = true)
@JsonIgnore
private List<Item> items;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CUSTOMER_ID", nullable = false)
private Customer customer;
@Path("customers")
public class CustomerRest {

    @Inject
    NewSessionBean newSessionBean;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getAllCustomers() {
        return newSessionBean.getCustomers();
    }
}
我希望有一个格式良好的JSON消息,但没有迹象表明这一点。我得到的只是浏览器上的
java.lang.StackOverflowerError
,服务器日志生成以下内容:

Generating incomplete JSON|#]
    java.lang.StackOverflowError
    java.lang.StackOverflowError    at org.eclipse.yasson.internal.serializer.DefaultSerializers.findByCondition(DefaultSerializers.java:130)
看起来您没有使用project。在这种情况下,您应该使用
@JsonbTransient
注释。见:

默认情况下,
JSONB
忽略具有非公共访问权限的属性。全部的 公共属性-公共字段或带有 公共getter被序列化为
JSON
文本

可以使用
@JsonbTransient
注释排除属性。 忽略用
@JsonbTransient
注释注释的类属性 通过
JSON绑定
引擎。行为因位置不同而不同
@JsonbTransient
已放置批注

另见:


您需要查看:
@JsonManagedReference
@JsonBackReference
注释。阅读:。另见:,谢谢。但是,我确实尝试了JsonManagedReference和JsonBackReference,但没有成功。您没有使用Jackson将对象序列化为JSON。因此,使用Jackson注释无法修复任何问题。在org.eclipse.yasson.internal.serializer.DefaultSerializers.findByCondition(DefaultSerializers.java:130)上阅读stacktrace:
。你用的是yasson,不是Jackson。很抱歉反应太晚。是的,这个把戏确实管用。非常感谢!!