休眠@OneToMany,不带单独的联接表

2022-09-02 10:20:19

请考虑以下数据库架构:

create table UserGroup ( id int not null auto_increment, name varchar(200),
    primary key(id));
create table User ( id int not null auto_increment, name varchar(200),
    groupId int not null, primary key(id));

User.groupId = UserGroup.id,因此一个用户只能是一个组的成员,但一个用户组可以存在多个用户。到目前为止,让我们在Hibernate中制作实体。这里是:User

@Entity
@Table(name = "User")
public class User {

    @Id
    @Column(name="id", nullable = false)
    private Integer id;

    @Column(name="name", length = 200, nullable = true)
    private String name;

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name = "groupId", nullable = false, insertable=false, updatable=false)
    @ForeignKey(name="FK_GroupId")
    private UserGroup userGroup;

    /* Getters, Setters, toString, equals & hashCode */
}

这里是:UserGroup

@Entity
@Table(name = "UserGroup")
public class UserGroup {

    @Id
    @Column(name="id", nullable = false)
    private Integer id;

    @Column(name="name", length = 200, nullable = true)
    private String name;

    @OneToMany(fetch=FetchType.EAGER)
    private List<User> users;

    /* Getters, Setters, toString, equals & hashCode */
}

现在,我将收到一个错误,因为它需要一个联接表。由于与此应用程序将取代的其他应用程序的互操作性,我的数据结构是“一成不变的”,因此我不会创建连接表。此外,也不应该需要它。我怎样才能使一个只是一个用户列表在哪里?"Table mydb.usergroup_user' doesn't exist"List<User> usersUser.groupId == UserGroup.Id


答案 1

我认为您需要在注释中。mappedBy="UserGroup"@OneToMany


答案 2

推荐