繁体   English   中英

Hibernate @OneToMany没有单独的连接表

[英]Hibernate @OneToMany without a separate join table

请考虑以下数据库架构:

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> users ,这些List<User> users只是User.groupId == UserGroup.Id的用户列表?

我认为你需要@OneToMany注释中的mappedBy="UserGroup"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM