[软件设计/软件工程] @manytomony 没有连接表(旧数据库)

[复制链接]
发表于 2022-5-4 15:27:14
问题
我不得不在设计糟糕的遗留数据库中应用 JPA。不幸的是无法改变它。幸运的是,只有只读访问权限。

我发现的最奇怪的事情之一是“多对多”。没有连接(或中间)表的关系。这是表结构的简化:
  1. USER                      ACCESS
  2. ----                      ------
  3. ID int primary key        ID int primary key
  4. NAME varchar2(20)         NAME varchar2(20)
  5. ACCESS_GROUP int          ACCESS_GROUP int
复制代码

“概念上”该表必须通过以下方式映射到 Java 类:
  1. public class User {
  2.     private Integer id;
  3.     private String name;
  4.     @ManyToMany private List<Access> accessList;
  5. }

  6. public class Access {
  7.     private Integer id;
  8.     private String name;
  9.     @ManyToMany private List<User> userList;
  10. }
复制代码

但我不认为这是可能的。您认为在 JPA 中访问这些表并浏览它们的最佳方式是什么?

回答
您可以尝试将其映射为两个只读的一对多关系:
  1. public class User {
  2.     @Column(name = "ACCESS_GROUP")
  3.     private Integer group;

  4.     @OneToMany
  5.     @JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP",
  6.         insertable = false, updateable = false)
  7.     private List<Access> accessList;
  8.     ...
  9. }

  10. public class Access {
  11.     @Column(name = "ACCESS_GROUP")
  12.     private Integer group;

  13.     @OneToMany
  14.     @JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP",
  15.         insertable = false, updateable = false)
  16.     private List<User> userList;
  17.     ...
  18. }
复制代码






上一篇:使阵列短路。 forEach 类调用中断
下一篇:空格分隔列表中的字符串

使用道具 举报

Archiver|手机版|小黑屋|吾爱开源 |网站地图

Copyright 2011 - 2012 Lnqq.NET.All Rights Reserved( ICP备案粤ICP备14042591号-1粤ICP14042591号 )

关于本站 - 版权申明 - 侵删联系 - Ln Studio! - 广告联系

本站资源来自互联网,仅供用户测试使用,相关版权归原作者所有

快速回复 返回顶部 返回列表