sin*_*pop 10 java sql hibernate jpa jpa-2.0
我必须在遗留数据库中应用JPA,设计很糟糕.不幸的是不可能改变它.幸运的是只能进行只读访问.
我发现的一个最奇怪的事情是没有连接(或中间)表的"多对多"关系.这是表结构的简化:
USER ACCESS
---- ------
ID int primary key ID int primary key
NAME varchar2(20) NAME varchar2(20)
ACCESS_GROUP int ACCESS_GROUP int
Run Code Online (Sandbox Code Playgroud)
"从概念上讲"这个表必须以这种方式用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;
}
Run Code Online (Sandbox Code Playgroud)
但我认为这是不可能的.您认为在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;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6590 次 |
| 最近记录: |