Я пытаюсь отобразить существующую схему базы данных, используя аннотации 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;
...
Группа и пользователь должны иметь отношение «многие ко многим» между ними, но проблема в том, что в таблице соединения («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, потому что этот точный пример существует в старой документации Hibernate. Но я не могу найти никаких доказательств того, что это когда-либо работало с использованием аннотаций? Я попытался с @JoinFormula вместо @JoinColumn, но это не компилируется. Возможно ли это?