Hibernate:常见错误释义

要解释hibernate的错误,就必须完全了解hibernate的执行流程,和他需要的一些信息(主要就是一些配置文件)

hibernate内部,不知道Person是一个持久化类

   错误之一:在hibernate.cfg.xml文件中,没有把person的映射文件加进去

错误原因:

  表不存在

  根据持久化类和映射文件没有建立表

  hibernate.cfg.xml中,得配<propertyname="hbm2ddl.auto">update</property>才能让hibernate帮你创建表


session.get方法调用的是该对象默认的构造函数创建对象的,所以所以一个持久化类中必须得保证有一个默认的构造函数

这是由于hibernate是是根据OID来区别两个对象的,必须保证不同的对象的OID不一样。

hibernate的配置文件中,映射文件的路径或者名称写错了


错误原因:因为在映射文件中才要查找持久化类,所以如果持久化类找不到,肯定是映射文件的问题在映射文件中class元素的name属性的值写错了

hibernate中的session.get方法的第二个参数的类型应该和相应的持久化类的标识符类型相匹配

这可能就是由于该字段不支持自动增长,需要设置自动增长


错误原因:在映射文件中,该对象的主键的生成机制是assigned,但是在程序中却没有赋值


错误分析:

   通过映射文件可以知道:classesstudent是一对多的关系通过该代码可以看出在保存classes的时候要保存student

   显示保存:只要session.save操作了一个对象,就是显示保存

   隐式保存:不在程序中做保存的动作,而交给hibernate来做

   只有在classes.hbm.xml文件中

       <set name="students"cascade="save-update">存在cascade属性 hibernate才要做隐式操作

   如果没有写cascade属性,在保存classes的时候,student仍然是临时状态。在两个对象关联的时候,进行保存的时候,hibernate不允许有临时状态的对象的出现

错误原因:映射文件和持久化类中的属性不匹配

错误原因:没有找到关联的类Classes.hbm.xml文件中关联student,所以在这里没有在classes.hbm.xml文件中找到student

错误的根本原因:就是主外键的约束             外键(jdbc)--->inverse(hibernate)

产生对象利用的是懒加载的模式,但是并没有把实际的内容加载出来,而这个时候session关闭了




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值