Hibernate开发中常见错误总结
org.hibernate.MappingException: Unknown entity: cn.itcast.hibernate717.helloworld.Person
hibernate框架根本不知道Person这个持久化类的存在
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
如果主键的生成策略采取的是identity,而数据库中表的主键不是自动生成机制,则报这样的错误
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [cn.itcast.hibernate717.helloworld.Person#1]
如果在hibernate中,有两个对象,但是其ID值是相同的,这样的情况在hibernate中是不允许出现 (在hibernate中,强调对象的唯一性)
Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`test/orders`, CONSTRAINT `FKC3DF62E58940CCE2` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`))
违反了主外键约束的原则
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cn.itcast.hibernate717.manytomany.Student
错误产生的原因:
在多对多时,代码中写了两个对象。程序的意图是通过级联的方式把这两个对象全部保存到数据库相应的表中。但是级联在映射文件中不存在,这个时候hibernate只会认session.save中的参数代表的对象
而另外一个对象则认为是瞬态的对象,所以会报如此的错误
在使用hibernate时,报了 Could not parse configuration: /hibernate.cfg.xml
这很有可能是hibernate.cfg.xml文件出错
此时可以先用浏览器打开 hibernate.cfg.xml文件 看看能不能正常显示,如果不能,则说明配置文件编写有问题(比如DTD的url错误,标签错误等),改正相应的错误后就不报异常了