我的印象是,当hbm2ddl.auto设置为“update”时,hibernate(版本3.6)将扫描实体注释并更新数据库引用并创建新表,它一直工作到今天, 有两个bean:角色和菜单,我为他们定义了单向的ManyToMany关联
@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没有t存在但是如果我将hbm2ddl.auto设置为“create”它可以正常工作,那么有人可以解释为什么hibernate之前不会创建ROLEMENU吗?
答案 0 :(得分:1)
它不会。您需要将选项设置为create
或create-drop
。
update只会改变表语句。