Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Spring 春季数据JPA@OneToMany_Spring_Hibernate_Spring Mvc_Spring Data Jpa_Spring Data - Fatal编程技术网

Spring 春季数据JPA@OneToMany

Spring 春季数据JPA@OneToMany,spring,hibernate,spring-mvc,spring-data-jpa,spring-data,Spring,Hibernate,Spring Mvc,Spring Data Jpa,Spring Data,我正在设计DB的模型: @Entity @Table(name="t_urna") public class Urna implements Serializable { @OneToMany(mappedBy = "urna", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) @JsonIgnore pr

我正在设计DB的模型:

@Entity
@Table(name="t_urna")
public class Urna implements Serializable {


    @OneToMany(mappedBy = "urna", 
               cascade = CascadeType.ALL, 
               orphanRemoval = true, fetch = FetchType.EAGER)
    @JsonIgnore
    private Set<Vot> vots = new HashSet<>();

..
}


@Entity
@Table(name="t_vot")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Vot implements Serializable {

   @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "urna_id")
    @JsonIgnore
    Urna urna;

}
@实体
@表(name=“t_urna”)
公共类Urna实现可序列化{
@OneToMany(mappedBy=“urna”,
cascade=CascadeType.ALL,
(删除=true,获取=FetchType.EAGER)
@杰索尼奥雷
private Set vots=new HashSet();
..
}
@实体
@表(name=“t_vot”)
@JsonInclude(JsonInclude.Include.NON_NULL)
公共类Vot实现可序列化{
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“urna\u id”)
@杰索尼奥雷
乌尔纳乌尔纳;
}

我想知道在这两个类中设置FetchType.eanger是否会导致问题,比如永无止境的循环或堆栈溢出。。。。如果这是一个好的实践

那么
@ManyToOne
的默认获取类型无论如何都是
EAGER
。如果在
@OneToMany
上设置它,则不会导致堆栈溢出


如果这是一个好的做法?我不会说是的,但有时您还需要获取相关实体。但是我想说,最好指定不,你不会有一个无休止的循环

我不认为在这个层次上有好的或坏的做法。有时最好使用LAZY,因为它会阻止您加载不需要的对象。有时最好使用EAGER,因为如果需要对象,它可以防止hibernate运行多个请求


在编写微服务时,我总是使用EAGER(et-boundedcontextaggregate)。对于一块巨石,也许懒惰更明智。

应该会有帮助……你不会有循环问题。但急切的收获是一个巨大的挑战。我不建议在任何情况下使用它。