我必须在遗留数据库中应用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<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",updateable = false) private List<User> userList; ... }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。