Hibernate级联删除

 

最近在搞Hibernate。看到级联删除这一段。按照书本上来。可惜老是出现错误。
org.hibernate.HibernateException: CGLIB Enhancement failed: com.customerandorder.Customer
 at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:104)
 at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:49)
 at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
 at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3232)
 at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:237)
 at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:174)
 at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)
 at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:871)
 at org.hibernate.impl.SessionImpl.load(SessionImpl.java:788)
 at org.hibernate.impl.SessionImpl.load(SessionImpl.java:781)
 at com.test.TestCustomerandOrder.main(TestCustomerandOrder.java:44)
Caused by: java.lang.InstantiationException: com.customerandorder.Customer$$EnhancerByCGLIB$$b47a1da9
 at java.lang.Class.newInstance0(Class.java:293)
 at java.lang.Class.newInstance(Class.java:261)
 at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:101)
 ... 10 more
Exception in thread "main"

 

真的是很郁闷。

在网上找了一下。看了几个解决的问题。有一个答案是正确的。

错误代码:org.hibernate.HibernateException: CGLIB Enhancement failed: <classname>

答:Hibernate 3的默认方式是把所有类通过代理方式来进行延迟加载。如果代码中的类有一个私有无参的构造器的话,Hibernate将无法在运行时将项目代码中的类作为子类装载。为了避免这个错误,类中的构造器函数至少应该在包内可见。

 

但是这个解释让我很困惑。创建一个类不是已经直接建立了public的无参构造函数吗!难道还要自己手动在写一个。于是又找寻其他答案。有几个的解释和这个一样。抱着试一下的态度写了两个public的无参构造函数。

public Customer(){}

public Order(){}

结果问题解决了。

而且是一对多的类写个构造函数就可以了。就是说 Order这个构造函数都无需写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值