我在学冬眠。我有点困惑于hbm2dll.auto更新属性。更改模型对象数据类型并不改变mysql中表的数据类型。
首先,我创建了以userId作为数据类型int的用户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属性更改为update。
因此,在此更改之后,即使用户对象也有字符串作为userid,表userid数据类型也不会更改为varchar。如何使用hibernate更改表的数据类型。
发布于 2015-04-21 12:19:53
我相信update不能改变数据类型。
假设string类型的字段将更改为Integer。现有数据会发生什么变化?
因此,如果表不是空的,则不能保证更新(数据类型更新)。
发布于 2016-11-21 12:55:04
根据我的理解,hibernate将不允许您直接更新字段数据类型,为此,我们必须对当前字段进行备份,然后需要创建新字段,然后在新字段中复制备份数据。
如果我错了,也请纠正我。
发布于 2015-04-21 15:21:27
如果不想丢失旧数据,可以手动执行以下操作:
https://stackoverflow.com/questions/29771724
复制相似问题