页面显示错误:ERROR org.hibernate.proxy.pojo.javassist.JavassistProxyFactory - HHH000142: Bytecode enhancement failed: cn.myssh.client.entity.Client
console上带的错误:cn.myssh.client.entity.Client_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
今天在进行级联删除时,操作之后,再运行服务器,点开Contact页面,就成这样了。
之前有一个Contact表中的属性名,从custId更改成clientId,然后进行级联删除时还没出现问题。
现在进行一次级联删除后就出现问题了。
后来发现是这样的,我在进行小修改的时候,不小心将Client.hbm.xml中的这个内容删除了,就出现了这个内容。
lazy="false"
<class name="cn.myssh.client.entity.Client" table="t_client" lazy="false">
<!-- 设置主键 -->
<id name="cID" column="cID" >
<!-- 设置自动生成 -->
<generator class="native"></generator>
</id>
<property name="clientName" column="clientName"></property>
<property name="clientDesc" column="clientDesc"></property>
<property name="clientAddress" column="clientAddress"></property>
<property name="clientPrice" column="clientPrice"></property>
<!-- 客户与联系人的关联 -->
<!-- 取消双向维护外键,在 "一"的一方设置,加入 inverse="true"来取消维护 -->
<set name="contactSet" inverse="true" cascade="delete">
<key column="custId" /> <!-- 在联系人表中的外键名称 -->
<one-to-many class="cn.myssh.contact.entity.Contact" />
</set>
</class>
在之前都好好的是因为自己没注意到这个地方,然后删除了。
我的环境是这样的。
一对多的环境,
Client表(一)
Contact表(多)
这个lazy="false"是写在Client.hbm.xml表中的,是延时加载的作用,当真正要调用的时候再去进行加载。我就不多说它的作用,还是说回这个的解决方法。
1、在Client(一)的映射参数文件(Client.hbm.xml)中添加上这个代码,可以解决,但是有的情况不适用延时加载的,那样就不适用这个了。就可以看一下你是否有第2的情况 。
2、确认一下自己的jar包中是否有两个javassist.jar包,像我就有这个情况了。将其中一个删除了,那样即使不加上面的代码,也不会出现上面的异常了。