Java 防止在许多实体上进行循环JSON转换
我正在将JPA实体转换为RESTAPI的JSON。一些实体具有Java 防止在许多实体上进行循环JSON转换,java,spring,rest,jpa,jackson,Java,Spring,Rest,Jpa,Jackson,我正在将JPA实体转换为RESTAPI的JSON。一些实体具有manytomy关系,这可能导致转换过程中出现递归。我知道如何使用@JsonIgnoreProperties来防止manytomone关系上的递归,但不知道manytomone。感谢您的指导。以下是一个例子: @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST,CascadeType.DETACH}) @JoinTable(name = "in
manytomy
关系,这可能导致转换过程中出现递归。我知道如何使用@JsonIgnoreProperties来防止manytomone
关系上的递归,但不知道manytomone
。感谢您的指导。以下是一个例子:
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST,CascadeType.DETACH})
@JoinTable(name = "insurance_companycodes", joinColumns = {
@JoinColumn(name = "insurance_id", referencedColumnName = "id", nullable = false, updatable = false) }, inverseJoinColumns = {
@JoinColumn(name = "insuranceCompanyCode_id", referencedColumnName = "id", nullable = false, updatable = false) })
private Set<InsuranceCompanyCode> insuranceCompanyCodes = new HashSet<>();
@ManyToMany(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.DETACH})
@JoinTable(name=“保险公司代码”,JointColumns={
@JoinColumn(name=“insurance\u id”,referencedColumnName=“id”,nullable=false,updateable=false)},inverseJoinColumns={
@JoinColumn(name=“insuranceCompanyCode\u id”,referencedColumnName=“id”,nullable=false,updateable=false)})
私有集insuranceCompanyCodes=new HashSet();
我想返回实体对于rest服务不是一个好的选择。把DTO作为身体的一部分交给控制器,然后作为资源返回。因此,可能会首选单独的DTO类?您可以使用@JsonManagedReference
和@jsonbackreference
来解决您的问题。@skyman选择DTO。实体上特定于Jackson的注释将起作用,并且可能足以满足那些仍然微不足道的琐碎应用程序。否则,您会弄乱关注点的分离(实体关注点=持久性,DTO关注点=传输),并且在向实体添加字段时可能会意外地发送过多的数据。感谢您的评论。我想最好加上DTO