我正在学习休眠。我对hbm2dll.auto更新属性感到困惑。模型对象数据类型的更改不会更改mysql中表的数据类型。
首先,我使用userId作为数据类型int创建了User Pojo。最初我将hbm2dll属性设置为CREATE。
@Entity(name="user")
public class User {
@Id
private int userid;
private String username;
....
}
首先,为了保存数据,我创建了如下所示的用户对象,并使用sessionFactory保存。
User user = new user();
user.setUserid(1);
user.setUsername("First User");
由于上述努力,创建了用户表,其中userid数据为int。
但后来我将pojo的userid数据类型更改为string。
此外,我更改了hbm2ddl属性以进行更新。
因此,在此更改之后,即使用户对象将字符串作为userid,表userid数据类型也不会更改为varchar。如何使用hibernate更改表的数据类型。
答案 0 :(得分:2)
我相信update
无法更改数据类型。
想象一下,string类型的字段将更改为Integer。现有数据会发生什么?
如果表不为空,则无法保证更新(数据类型更新)。
答案 1 :(得分:2)
根据我的理解,hibernate不允许你直接更新字段数据类型, 为此,我们必须备份当前字段,然后需要创建新字段,然后在新字段中复制备份数据。
如果我错了,请纠正我。
答案 2 :(得分:1)
如果您不想丢失旧数据,可以手动执行以下操作:
答案 3 :(得分:0)
删除数据库,让hibernate再次重新创建它。