3

我的印象是,当 hbm2ddl.auto 设置为“update”时,hibernate(3.6 版)会扫描实体注释并更新数据库引用并创建新表,直到今天它一直工作正常,有两个 bean:role和菜单,我为它们定义了一个单向多对多关联

@Id
@GenericGenerator(name="uuidGenerator", strategy="uuid")
@GeneratedValue(generator="uuidGenerator")
private String roleId;
@Column
private String roleName;
@ManyToMany(cascade=CascadeType.REMOVE)
@JoinTable( name="roleMenu",
    joinColumns=
        @JoinColumn(name="roleId"),
    inverseJoinColumns=
        @JoinColumn(name="menuid")
        )
private Set<Menu> Menus;

我已经在数据库中有表 ROLE 和表 MENU,所以我期待 hibernate 为我创建中间表 ROLEMENU,但它只会尝试更新 ROLEMENU 中的外键引用,这会导致错误导致 ROLEMENU 尚不存在,但如果我将 hbm2ddl.auto 设置为“创建”,它工作正常,那么有人可以解释为什么 hibernate 之前不创建 ROLEMENU 吗?

4

1 回答 1

1

不会。您需要​​将选项设置为createcreate-drop

update 只是改变表语句。

于 2013-04-15T07:08:31.863 回答