【前言】
起因是我在给公司做官网的时候用了ssh框架, 报了下面这么个错误:
Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from input stream
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream
Caused by: org.hibernate.PropertyNotFoundException: field [UID] not found on com.tgb.dmtOS.useradmin.vo.AdminUser
原因其实给的提示里写的很清楚:在实体对象 AdminUser里没有找到UID。 但是由于我做之前特意问了下别人, 配置文件里的property是应该和数据库里字段一致还是和对象属性一致,得到了和数据库一致的回复 。 所以就没忘映射错了这上想,查了一个小时资料才想到可能是这个问题。 于是顺着这个问题就又试了几种情况。
【正文】
情况一:hbm.xml 里property和 实体属性不一样,和数据库一样。
结果: 失败,不能运行。 报上述错误。
情况二:hbm.xml 和实体属性一样,和数据库字段名不一样。
比如::property name="userna" ,数据库字段为“username”
结果:不报错,但是不能正确映射到数据库。
情况三:hbm.xml 和实体属性一样,和数据库字段名一样,大小写不一样。
比如: property name=“username”, 数据库字段为“userName”。
结果: 可以正常运行。
情况四: hbm.xml 和实体属性一样,和数据库字段名一样,但是属性数不一致。
结果: 可以正常运行, 会映射操作程序中操作的字段。
【总结】
每一个错误都是咱们成长明细的机会, 在错误中对原理把握更深刻。