hibernate不会创建hbm2ddl.auto设置为“update”的中间表

时间:2013-04-15 07:06:42

标签: java spring hibernate

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

1 个答案:

答案 0 :(得分:1)

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

update只会改变表语句。