Hibernate将新的布尔列添加到数据库

ara*_*een 4 database hibernate

我试图使用注释将一个新的bool列添加到其中一个表中,我试过了

@Column(name = "selected", nullable = true)

private boolean selected;

然后我添加getter/setter但是当我运行应用程序时,我收到此错误:

Exception occurred inside setter of com.ingens.warranty.model.WarrantyCase.warrantyDetail; nested exception is org.hibernate.PropertyAccessException: Exception occurred inside setter of com.ingens.warranty.model.WarrantyCase.warrantyDetail

我对Hibernate很新,虽然我的问题可能是一个新手问题,但它让我很安静

谢谢

编辑:

好吧我在错误堆栈中发现了这个错误Unknown column 'warrantyse14_.selected' in 'field list',显然没有创建列,并且sql select命令正在使用那个不存在的列,所以我假设注释因某些原因不起作用,它只是我运行应用程序后不会创建列.

Ori*_*Dar 5

更改 private boolean selected;

private Boolean selected;

我认为发生的事情是Hibernate尝试将所选映射列中的空值设置为所选字段,这是原始的,因此是异常.如果字段已设置为Object,则不会发生这种情况.

列定义与模式更新/验证(hbm2ddl)结合使用,并且映射不包括您自己定义新字段的情况.在这种情况下,您必须发出两个语句:

"alter table ...添加列选择..."

"update ... set selected = false其中selected为null"

为了触发对模式的自动Hibernate更新(例如应用@ColumnDefinition),您必须添加以下Hibernate属性:hibernate.hbm2ddl.auto=update如果您使用JPA则为persistence.xml提供程序属性,或者如果使用,则为hibernate.cfg.xml中的属性单独休眠