hibernate的实体类双向关联转json报错之死循环解决方案
来源:互联网 发布:免费的数据恢复工具 编辑:程序博客网 时间:2024/05/18 05:13
有时候我们希望实体类转成json的时候,把一方和多方都转成json,即双向关联。这种将Object转化为JSON数据的方法比较常见,但是它这个架包识别不到@JsonIgnoreProperties和@JsonIgnore这个注解,因为他们不是同一个架包,不是同一个规范,所以在转化JSON的时候,还是会发生循环引用的问题。
简单实用的例子如下:
一方的实体,中有多方的关联
public class CgFormHeadEntity implements java.io.Serializable {
private List<CgFormFieldEntity> columns;
@OneToMany(cascade=CascadeType.REMOVE,mappedBy="table") @OrderBy(clause="orderNum asc")
public List<CgFormFieldEntity> getColumns() {
return columns;
}
public void setColumns(List<CgFormFieldEntity> columns) {
this.columns = columns;
}
}
多方的实体,一方的关联
public class CgFormFieldEntity implements java.io.Serializable {
private CgFormHeadEntity table;
@ManyToOne
@JoinColumn(name ="table_id",nullable=false,referencedColumnName="id")
@JsonIgnore//还是会发生循环引用的问题
@ForeignKey(name="null")
public CgFormHeadEntity getTable(){
return this.table;
}
public void setTable(CgFormHeadEntity table){
this.table = table;
}
}
进行一方的实体的json配置,return true代表过滤这个属性,不进行转json,下面的配置指明过滤实体中名字为table,且数据类型为CgFormHeadEntity的属性。这个配置应用在CgFormHeadEntity 的对象转json的时候,会把CgFormHeadEntity 实体中的属性,包括columns属性转json,之所以过滤table的原因是,转columns属性为json的时候,把columns集合里的一方的引用过滤掉,从而防止死循环。
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object obj, String name, Object value) {
if(value instanceof CgFormHeadEntity&&name.equals("table")){
return true;
}else{
return false;
}
}
});
用法地址:http://yayihouse.com/yayishuwu/chapter/985
- hibernate的实体类双向关联转json报错之死循环解决方案
- Hibernate双向关联 Json死循环
- Hibernate双向关联转Json死循环问题(Gson)
- Hibernate 双向关联实体转Json
- hibernate双向关联和json-lib使用的死循环问题的解决
- 递归算法:解决hibernate实体外键关联,导致json解析死循环!
- springboot 使用hibernate进行双向关联json解析时死循环处理
- hibernate关联对象通过Springmvc转json死循环
- 关于Hibernate中自关联向前台传送json死循环的问题
- json+hibernate死循环问题的解决方法
- json+hibernate死循环问题的解决方法
- Hibernate表关联对象转Json双向关联解析过度
- Hibernate 关联关系中toString引起的死循环
- 使用jackson转json解决双向关联循环调用
- Hibernate中双向关联加载排序的解决方案
- Hibernate高级实体关联映射之多值的实体关联(实体类实现三重关联)
- Hibernate高级实体关联映射之单值的实体关联(共享的主键关联)
- Hibernate高级实体关联映射之单值的实体关联(一对一的外键关联)
- 网络流建模(二)
- Atitit diy战略 attilax总结
- centos 7 mariadb
- Lua中的三目运算符
- 28 Three.js的特殊光源THREE.HemisphereLight户外光照光源
- hibernate的实体类双向关联转json报错之死循环解决方案
- OC字符串和数值
- scala
- 二分
- Reverse Linked List II
- AC自动机(HDU 2222: Keywords Search)
- MVC设计模式
- c_04 结构体—important
- HTML模板渲染引擎Hogan