【发布时间】:2020-03-04 21:04:46
【问题描述】:
我正在尝试使用 Hibernate+JPA 注释映射现有的数据库架构。
我的一个实体的映射如下:
@Entity
@Table(name = "users")
public class User implements Serializable {
@Id
private int department;
@Id
private int userId;
...
还有另一个实体,组:
@Entity
@Table(name = "groups")
public class Group implements Serializable {
@Id
private int department;
@Id
private int groupId;
...
Group 和 User 之间应该有多对多的关系,但问题是连接表(“user_group”)只有“DEPARTMENT, USERID, GROUPID”列 - 即需要使用 DEPARTMENT 列在 joinColumns 和 inverseJoinColumns 中:
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "user_groups",
joinColumns = { @JoinColumn(name = "department"), @JoinColumn(name = "groupid") },
inverseJoinColumns = {@JoinColumn(name = "department"), @JoinColumn(name = "userid") }
)
private List<User> groupUsers = new ArrayList<>();
这会导致映射错误 - “实体映射中的重复列”。
但是,使用 XML 看起来这是/可能的,因为这个确切的例子存在于 old Hibernate documentation. 但我找不到任何证据表明这曾经使用注释有效?我尝试使用@JoinFormula 而不是@JoinColumn,但这无法编译。有可能吗?
【问题讨论】: