Hibernate学习过程中遇到的几个小问题
2015-10-04 21:02
302 查看
问题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数据库引擎时才会出现!
解决办法:经搜索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数据库引擎时才会出现!
相关文章推荐
- SGU326 Perspective(指派问题)
- LintCode-中位数
- 7 TIPS How to Become a Good Hardware Design Engineer
- win10启动时如何设置默认打开小键盘数字输入切换键?
- HDU 2588-GCD(欧拉函数)
- 两个集合的合并
- ROS-机器人操作系统(ROS)浅析----第三章
- C++函数
- UVALive 6511 Term Project
- Codeforces/gym/100685/problem/G Gadget Hackwrench ( LCA )
- hdu4121 判断黑帅下一步会不会被红棋将军(分类讨论)
- 入门erlang的一些感想。
- 斗争程序猿(三十七)——历史朝代大学(一)——开幕
- iOS9中http不能使用的解决
- charles破解
- iOS oc加载plist数据
- 常用类(String、StringBuffer、Random、Enum,日期类、数字类)
- 【ACM】HDOJ 1045 Fire Net
- 【ACM】HDOJ 1045 Fire Net
- [笔试题目] 腾讯2015年9月基础研究笔试题