常见异常整理

本文介绍了一种解决SSH框架整合过程中出现的Javassist增强失败的方法,通过调整Hibernate配置与实体类映射文件中的lazy加载属性来避免异常。

HHH000142: Javassist Enhancement failed: com.xxx.xxx

在实体类映射文件中配置了many-to-one后,出现了上述的错误

解决办法:在many-to-one标签中,设置lazy属性值为false

<many-to-one name="custSource" column="cust_source" class="com.itheima.domain.BaseDict" lazy="false"></many-to-one>
<many-to-one name="custLevel" column="cust_level" class="com.itheima.domain.BaseDict" lazy="false"></many-to-one>

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException

target [alter table t_user add column uid integer not null]
    at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:59)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlString(SchemaMigratorImpl.java:431)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings(SchemaMigratorImpl.java:449)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.migrateTable(SchemaMigratorImpl.java:253)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:170)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:133)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:470)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
    at cn.itcast.utils.HibernateUtils.<clinit>(HibernateUtils.java:12)

在整合ssh框架时,测试数据库配置是否正确,遇到此异常。

之前是

<property name="hibernate.hbm2ddl.auto">update</property>

改为

<property name="hibernate.hbm2ddl.auto">create</property>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值