我的印象是,当 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 吗?