@ManyToMany没有连接表(旧数据库)

我必须在遗留数据库中应用JPA,设计很糟糕。 不幸的是不可能改变它。 幸运的是只能进行只读访问。

我找到的一个最奇怪的事情是没有连接(或中间)表的“多对多”关系。 这是表结构的简化:

USER ACCESS ---- ------ ID int primary key ID int primary key NAME varchar2(20) NAME varchar2(20) ACCESS_GROUP int ACCESS_GROUP int 
  • 可以在两个表中重复ACCESS_GROUP列
  • 一个USER可以与N ACCESS相关
  • 一个ACCESS可以与N USER相关

“从概念上讲”这些表必须以这种方式与Java类映射:

 public class User { private Integer id; private String name; @ManyToMany private List accessList; } public class Access { private Integer id; private String name; @ManyToMany private List userList; } 

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

您可以尝试将其映射为两个只读的一对多关系:

 public class User { @Column(name = "ACCESS_GROUP") private Integer group; @OneToMany @JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP", insertable = false, updateable = false) private List accessList; ... } public class Access { @Column(name = "ACCESS_GROUP") private Integer group; @OneToMany @JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP", insertable = false, updateable = false) private List userList; ... }