JPA :无限获取子项



我对两个实体关系有问题,它们互相调用,我想我得到了一个inifite获取:

@Entity
@Table(name = "domaine")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Domaine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToMany
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JoinTable(name = "lien_domaine_specialite",
joinColumns = @JoinColumn(name="domaine_id", referencedColumnName="ID"),
inverseJoinColumns = @JoinColumn(name="specialite_id", referencedColumnName="ID"))
private Set<Specialite> specialites = new HashSet<>();

@Entity
@Table(name = "specialite")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Specialite implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToMany(mappedBy = "specialites")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Domaine> domaines = new HashSet<>();
@ManyToOne
private Domaine domaine;

当我添加此关系ahd时出现问题,并且当:

@ManyToOne
private Domaine domaine;

当我像这样加载一个 Domaine 实体时:

Select domaine from Domaine domaine left join fetch domaine.specialites where domaine.id = ?1

有没有办法告诉Specialite在不需要的时候不要加载Domaine

JPA可以轻松处理交叉引用。在当前 JPA 上下文期间装入的实体将不会再次装入。您面临的问题是什么? 我想您在尝试将图形序列化为 json 时进入无限循环。如果你不使用@JsonManagedReference@JsonBackReference,JSON处理库确实会进入无限循环(杰克逊特定(

最新更新