我有一个关系JPA
代码OneToMany
。ACustomer
有一个Item
要签出的列表。但是,代码继续生成StackOverflowError
。
有一次,我通过在从客户实体中@JsonIgnore
获取时应用解决了这个问题。List<Item>
但即使这样似乎也不再起作用了。
在Customer
课堂上:
@OneToMany(mappedBy = "customer", orphanRemoval = true)
@JsonIgnore
private List<Item> items;
在Item
课堂上:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CUSTOMER_ID", nullable = false)
private Customer customer;
和CustomerRest
类:
@Path("customers")
public class CustomerRest {
@Inject
NewSessionBean newSessionBean;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Customer> getAllCustomers() {
return newSessionBean.getCustomers();
}
}
方法newSessionBean.getCustomers()
:
public List<Customer> getCustomers(){
TypedQuery<Customer> q= em.createQuery("select c from Customer c", Customer.class);
return q.getResultList();
}
我希望收到格式良好的 JSON 消息,但没有任何迹象。我得到的只是java.lang.StackOverflowError
浏览器上的,服务器日志生成以下内容:
Generating incomplete JSON|#]
java.lang.StackOverflowError
java.lang.StackOverflowError at org.eclipse.yasson.internal.serializer.DefaultSerializers.findByCondition(DefaultSerializers.java:130)