当前位置: 首页 > wzjs >正文

电商网站怎么推广营销关键词有哪些

电商网站怎么推广,营销关键词有哪些,做网站需要交维护费么,网站建设属于什么职能使用 Jackson 库进行 JSON 序列化时遇到了 ‌无限递归(Infinite Recursion)‌ 问题,这是因为两个实体类 ComPointQuotaEntity 和 ComPointEntity 之间存在双向关联(point 和 pointQuota 相互引用),导致序列…

使用 Jackson 库进行 JSON 序列化时遇到了 ‌无限递归(Infinite Recursion)‌ 问题,这是因为两个实体类 ComPointQuotaEntity 和 ComPointEntity 之间存在双向关联(point 和 pointQuota 相互引用),导致序列化时陷入死循环。以下是解决方案:

解决方案‌

1. 使用 @JsonIgnore 忽略一个方向的引用

在其中一个实体类的关联字段上添加 @JsonIgnore 注解,直接阻止某一方的序列化:

// ComPointQuotaEntity.java
public class ComPointQuotaEntity {@ManyToOne@JoinColumn(name = "point_id")private ComPointEntity point;  // 保留此字段的序列化// 其他字段...
}// ComPointEntity.java
public class ComPointEntity {@OneToMany(mappedBy = "point")@JsonIgnore  // 忽略此字段的序列化private List<ComPointQuotaEntity> pointQuota;// 其他字段...
}

2. 使用 @JsonManagedReference@JsonBackReference

通过注解明确父子关系,Jackson 会序列化父级(@JsonManagedReference),但忽略子级(@JsonBackReference):

// ComPointQuotaEntity.java
public class ComPointQuotaEntity {@ManyToOne@JoinColumn(name = "point_id")@JsonManagedReference  // 标记为父级(序列化)private ComPointEntity point;// 其他字段...
}// ComPointEntity.java
public class ComPointEntity {@OneToMany(mappedBy = "point")@JsonBackReference  // 标记为子级(不序列化)private List<ComPointQuotaEntity> pointQuota;// 其他字段...
}

3. 使用 DTO 替代直接序列化实体

创建 Data Transfer Object (DTO),只暴露需要的字段,避免直接序列化 JPA 实体:

public class ComPointQuotaDTO {private Long id;private ComPointDTO point;  // 避免双向引用// 其他字段...
}public class ComPointDTO {private Long id;// 不包含 pointQuota 字段// 其他字段...
}

4. 配置 Jackson 忽略循环引用

在 application.properties 或 application.yml 中配置 Jackson:

# application.properties
spring.jackson.serialization.fail-on-empty-beans=false
spring.jackson.serialization.fail-on-self-references=false

或在代码中配置 ObjectMapper:

@Configuration
public class JacksonConfig {@Beanpublic ObjectMapper objectMapper() {return new ObjectMapper().configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false).configure(SerializationFeature.FAIL_ON_SELF_REFERENCES, false);}
}

5. 自定义序列化器(高级)

为关联字段自定义序列化逻辑,跳过循环引用:

public class ComPointQuotaEntity {@ManyToOne@JoinColumn(name = "point_id")@JsonSerialize(using = ComPointEntitySerializer.class)private ComPointEntity point;// 其他字段...
}public class ComPointEntitySerializer extends JsonSerializer<ComPointEntity> {@Overridepublic void serialize(ComPointEntity value, JsonGenerator gen, SerializerProvider provider) throws IOException {if (value != null) {gen.writeStartObject();gen.writeNumberField("id", value.getId());// 仅序列化需要的字段,跳过 pointQuotagen.writeEndObject();}}
}

总结‌

  • 推荐方案 2(@JsonManagedReference 和 @JsonBackReference)‌:简单且能保持双向关联。
    ‌>- 推荐方案 3(DTO)‌:彻底解耦序列化逻辑与数据库实体,适合复杂场景。
  • 避免直接序列化 JPA 实体,尤其是涉及双向关联时。
http://www.dtcms.com/wzjs/431530.html

相关文章:

  • 做的网站图片模糊如何建立一个自己的网站啊
  • 栖霞网站定制哪里有网页设计公司
  • 长沙品牌网站建设网站服务费一年多少钱
  • 营销型网站具备的二大能力推广效果最好的平台
  • frontpage新建网站高权重外链
  • 社区网站模板微信公众号软文怎么写
  • anaconda可以做网站吗免费网站流量
  • 给个人网站做百度百科app推广的常用方法
  • 做护士题的那个网站是什么seowhy
  • 学做蛋糕什么网站百度付费推广的费用
  • 网站空间 数据库网络推广员一个月多少钱
  • 开单独网站做a货鞋学开网店哪个培训机构好正规
  • wordpress做资源分享站最新病毒感染什么症状
  • 义乌好品质自适应网站建设百度快速seo优化
  • 邢台网站建设多少钱湖南百度seo
  • 如何做网站内容架构分析青岛网站优化公司
  • 岳阳做网站费用常见的网络推广方式
  • 做网站接项目常用的搜索引擎有哪些?
  • app 设计网站建设百度搜索高级搜索技巧
  • 网站开发速成培训机构百度下载app下载安装
  • 网站建设 运营网站工具查询
  • 做AI免费网站网站排名前十
  • 做单页面网站今日刚刚发生新闻事件
  • 广安北京网站建设淘宝营销推广方案
  • wordpress站标签也打不开全网优化哪家好
  • logo在线设计网站网站推广费用一般多少钱
  • 部队网站设计chrome 谷歌浏览器
  • 网站上的付费文章怎么做搜外seo
  • 服务器租用后怎么使用结构优化设计
  • 建网站的要求网站推广途径