Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止在许多实体上进行循环JSON转换_Java_Spring_Rest_Jpa_Jackson - Fatal编程技术网

Java 防止在许多实体上进行循环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

我正在将JPA实体转换为RESTAPI的JSON。一些实体具有
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