【讨论】请问中间表属于多方还是一方?

sunkes 2018-01-12 12:33:03


请问把多对多关系 拆成 两个一对多 中间表是多方还是一方?

用户与设备是多对多的关系,原先设有用户设备表在hibernate中。

因为中间表有变化, 除了外键 增加了其他字段, 所以要把多对多 拆成两个一对多.
我查看了很多博客 多对多 拆两个一对多的列子 都是把中间表作为多方. 我这也是.

UserDeviceRelate .java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "device_id")
private Device device;

但是我在查询数据的时候 userDeviceRelate .getDevice() 报错 第二次for的时候 找不到id = 3的设备.
no row with the given identifier exist

所有我觉得中间表 应该设计成一方设备和用户都是多方.通过中间表UserDeviceRelate Set<Device> set =userDeviceRelate.getDeviceSet() 获取所有设备.

//报错简化代码:
List<UserDeviceRelate> relateList = userDeviceRelateService.findUserDeviceRelateByUserId(1L);
// for (UserDeviceRelate deviceRelate : relateList) {
//
// System.out.println(deviceRelate.getDevice().getId()); //报错
// }




...全文
373 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunkes 2018-01-12
  • 打赏
  • 举报
回复
先说一下。我的数据没有问题。设备表有内容

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧