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

前端之家收集整理的这篇文章主要介绍了java – @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<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;
    ...
}

猜你在找的Java相关文章