@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; ... }