首页 > 其他分享 >jpa 循环引用

jpa 循环引用

时间:2023-03-13 11:13:30浏览次数:33  
标签:name jpa value sceneId private 循环 引用 JsonIgnoreProperties users

循环引用就是:A中有B,B中有A。一查询,就无限递归了。

现在给出解决方案(以及我认为,最好的方案。)

1 @JsonIgnore

直接忽略对象,简单粗暴,变成单项关联了。

 

2 @Transient

简单粗暴,直接从数据库映射了。

 

3 @JsonIgnoreProperties(value = { "xxx" })

这是jackson的注解。

这个比较推荐

这里是多对多的例子:

User 对象设置@JsonIgnoreProperties(value = { "users" }) //users代表EScene中的users对象

 
@Entity
@Table(name = "sys_user")
public class User implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String username;
 
    @JsonIgnoreProperties(value = { "users" })
    @ManyToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SUBSELECT)
    @JoinTable(name = "e_user_scene", joinColumns = { @JoinColumn(name = "uid") }, inverseJoinColumns = {
            @JoinColumn(name = "sceneId") })
    private List<EScene> scenes;
 
//get,set...
 
}

EScene 对象设置@JsonIgnoreProperties(value = { "senes" })   //senes代表User中的senes对象

 
@Entity
@Table(name = "e_scene",catalog = "evisu")
public class EScene implements java.io.Serializable  {
    private static final long serialVersionUID = 427407430798803968L;
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty("sceneId")
    private Integer sceneId;
 
 
    @JsonIgnoreProperties(value = { "senes" })
    @ManyToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SUBSELECT)
    @JoinTable(name = "e_user_scene", joinColumns = { @JoinColumn(name = "sceneId") }, inverseJoinColumns = {
            @JoinColumn(name = "uid") })
    private List<User> users;
 
 
//get,set
}

 

标签:name,jpa,value,sceneId,private,循环,引用,JsonIgnoreProperties,users
From: https://www.cnblogs.com/hanjun0612/p/17210636.html

相关文章

  • C++类内定义引用成员
    遵循三个规则C++类内可以定义引用成员变量,但要遵循以下三个规则:不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。构造函......
  • 变量的引用
    原文链接:https://blog.csdn.net/ChaoFeiLi/article/details/103593740定义:变量的引用是变量的别名注意点:变量的引用在声明时必须初始化变量的引用作为变量的别名,因此......
  • 工程化引用数据的几个类型总结
    基本数据类型有string,number,Boolean,undefined,null和es6新增的symbol和bingint。引用数据类型有数组、对象、字符串。在es6新增的还有set、map、weakset、weakmap。symbol创......
  • java8新特性-引用流-sorted
    例子:List<User>users=newArrayList<>();users.add(newUser("张三",30));users.add(newUser("李四",34));users.add(newUser("王五",20));......
  • CyclicBarrier循环屏障
    CyclicBarrier使用场景应用实例CyclicBarrier源代码分析流程分析总结1CyclicBarrier使用场景当有已知数量的线程需要在某一点同时执行时,先到达执行点的线程会进入等......
  • 【数据结构入门】带头双向循环链表(List)详解(初始化、增、删、查、改)
    1、链表的种类:总共有8种,以带不带头,单向或者双向,循环或者不循环来组合形成。单向或者双向带头或者不带头循环或者非循环主要学习下面两种链表的功能实现无头单向非循环链表:又......
  • java8新特性-引用流-max,min
    例子:List<User>users=newArrayList<>();users.add(newUser("张三",30));users.add(newUser("李四",34));users.add(newUser("王五",20));......
  • 摩天轮“循环语句”
    今日份学习“循环语句”本文简介:我们所认知的摩天轮是一圈圈循环的反复转圈,今天这篇文章介绍的“循环语句”也与摩天轮相同,那它是如何生成和运转的呢?我们来看一看吧。一,循环......
  • SpringBoot中使用POI导出Excel时怎样循环数据库数据赋值
    场景在已经实现简单的Excel导出的前提下,要结合具体业务实现查询数据库,并遍历赋值到excel上。实现使用MyBatisPlus从数据库查询数据Map<String,Object>param=newHashMap<St......
  • 浏览器事件循环相关概念及其理解
    相关解释​ 在打开浏览器的时候会创建出来若干进程,以便于完成相关任务,其实最重要的是渲染进程。​ 渲染进程的主要工作为:解析HTML,绘制CSS样式,执行JS代码等。​ 其中在执......