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命令正在使用那个不存在的列,所以我假设注释因某些原因不起作用,它只是我运行应用程序后不会创建列.
更改
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中的属性单独休眠
| 归档时间: |
|
| 查看次数: |
8565 次 |
| 最近记录: |