- 43
- 0
需求
我想做到的是 需要的时候触发(.size)懒加载加载关联表的所有数据,不需要的时候不加载关联表的数据,随心所欲.
问题
我的表实体有很多一对多、一对一的关联关系
user 是一端(mappedBy指定的维护端)
order 是多端
// in the user
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
@JsonIgnore
private Set<Order> orders;
// in the order
@ManyToOne(fetch = FetchType.LAZY)
@JsonIgnore
private User user;
我都给他们加上了LAZY
我在控制层用@RestController(通过jackson)返回json格式数据给前端.
没想到天杀的jackson序列化对象成json的时候会触发全部懒加载.
对于jsckson只能加上@JsonIgnore并且重写equals和hashCode来忽略掉.
结果不能随心所欲了...
这就和我的初衷不相符了.
期待大大们的解答.
目前操作
所有关联表的属性都通过@JsonIgnore注解掉,避免被序列化
通过 user.getOrders().size触发懒加载, getOrders() 获取用户所有订单.然后把user和orders集合都放到一个map中传给前端(好麻烦,而且json格式和名称什么的都全部改一遍)
期望:
{
name: xxx,
age: xxx,
orders: [
id: xxxx,
date: xxx
]
}
现实:
# 不能把orders放到user中,会被jackson忽略掉的.因为user的orders属性被我@JsonIgnore了
{
user: {
name: xxx,
age: xxx,
}
orders: [
id: xxxx,
date: xxx
]
}
想到的方案
添加一个转换类把实体转换成map,list再由jackson转json返回到前端(兼容问题和业务问题一堆一堆的)
spring data rest的控制层能返回不触发懒加载的json到前端.(还是没有改变现状)
希望
有更好更完美的方式.
1
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
