@manytomony 没有连接表(旧数据库)
问题我不得不在设计糟糕的遗留数据库中应用 JPA。不幸的是无法改变它。幸运的是,只有只读访问权限。
我发现的最奇怪的事情之一是“多对多”。没有连接(或中间)表的关系。这是表结构的简化:
USER ACCESS
---- ------
ID int primary key ID int primary key
NAME varchar2(20) NAME varchar2(20)
ACCESS_GROUP int ACCESS_GROUP int
“概念上”该表必须通过以下方式映射到 Java 类:
public class User {
private Integer id;
private String name;
@ManyToMany private List<Access> accessList;
}
public class Access {
private Integer id;
private String name;
@ManyToMany private List<User> 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<Access> 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<User> userList;
...
}
页:
[1]