Hibernate学习过程中遇到的几个小问题

  问题1. Microsoft的JDBC驱动程序有一个bug,在运行时会出现下列错误:   "【HIbernate】java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z"
解决办法:经搜索CSDN得知是microsoft提供的数据库驱动存在bug。需要换一种驱动连接,使用jtds(下载地址: http://sourceforge.net/projects/jtds/files/)(下载地址2,我的百度云盘 http://pan.baidu.com/s/1gdtZ4AJ )下载jtds1.2版,解压得到jtds-1.2.jar,引用到eclipse中项目目录下(去除原驱动引用),再更改hibernate配置文件:
原驱动连接配置:
  <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
 <property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=hibernate</property>

更改为使用jtds连接:  
  <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
 <property name="connection.url">jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=hibernate</property>

问题得到解决。补充:java代码直接调原jdbc驱动连接数据库是没有问题的,搭配hibernate会有此问题。

问题2.报错信息:Error applying BeanValidation relational constraints错误的解决办法
错误示例:
Exception in thread "main" org.hibernate.HibernateException: Error applying BeanValidation relational constraints
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at cn.com.zyx.model.StudentTest.main(StudentTest.java:20)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
... 4 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
... 9 more
Caused by: javax.validation.ValidationException: Unable to instantiate Configuration.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:272)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
... 10 more
解决办法:
在hibernate.hbm.xml中加上
<property name="javax.persistence.validation.mode">none</property>
说明:javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包,但是找不到,所以beanvalitionFactory错误.


问题3:Caused by: org.dom4j.DocumentException: http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd%20 Nested exception: http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd%20  at org.dom4j.io.SAXReader.read(SAXReader.java:484)  at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78)”
解决办法:
这是一个很奇葩的问题,在struts 2.1+srping 3.1+hibernate 4.1环境下用myeclipse 生成的xx.hbm.xml文件中的头部:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd ">在最后面多了一个空格,把这个空格去除:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">即能解决此问题!


------------------------------------------------------------------------------------------------

上述问题的解决办法,参考了CSDN上多为前辈的帖子,此处为集中整理,在此谨表谢意!  上述部分问题仅仅针对Hibernate加Mssql数据库引擎时才会出现!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值