52ky 发表于 2022-5-4 15:27:14

@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]
查看完整版本: @manytomony 没有连接表(旧数据库)