问题描述
今天刚学hibernate,测试一个程序,结果出现了这个问题,希望有大神帮我看看万分感激。结构图main函数图:hibernate.cfg.xml配置图:
解决方案
解决方案二:
我的hibernate配置文件<hibernate-configuration><session-factory><propertyname="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/sampledb</property><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.connection.password">root</property><propertyname="hibernate.show_sql">true</property></session-factory></hibernate-configuration>
应该是hibernate.connection.driver_class而非connection.driver_class吧加上hibernate.试试看
解决方案三:
引用1楼magi1201的回复:
我的hibernate配置文件<hibernate-configuration><session-factory><propertyname="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/sampledb</property><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.connection.password">root</property><propertyname="hibernate.show_sql">true</property></session-factory></hibernate-configuration>应该是hibernate.connection.driver_class而非connection.driver_class吧加上hibernate.试试看
还是不行.谢谢你的回复
解决方案四:
LZ把完整的错误信息粘贴出来吧
解决方案五:
端口号呢?jdbc:mysql://localhost:3306/你的db
解决方案六:
connection.url数据库端口没有写
解决方案七:
端口没写啊大哥
解决方案八:
3306端口号加上试试!
解决方案九:
数据库连接问题,看看是不是你的端口问题
解决方案十:
引用3楼qustbit的回复:
LZ把完整的错误信息粘贴出来吧
Exceptioninthread"main"java.lang.UnsupportedOperationException:TheusermustsupplyaJDBCconnectionatorg.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)atorg.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)atorg.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)atorg.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)atorg.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)atorg.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)atStudentTest.main(StudentTest.java:16)主类是这个语句报错:session.beginTransaction();
解决方案十一:
看看你的驱动jar包存在不,数据库的连接jar包。断点跟踪一下,看看connection是否获取到了。
解决方案十二:
引用9楼StefaniGaga的回复:
Quote: 引用3楼qustbit的回复:
LZ把完整的错误信息粘贴出来吧Exceptioninthread"main"java.lang.UnsupportedOperationException:TheusermustsupplyaJDBCconnectionatorg.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)atorg.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)atorg.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)atorg.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)atorg.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)atorg.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)atStudentTest.main(StudentTest.java:16)主类是这个语句报错:session.beginTransaction();
配置文件中数据库url后面没有端口号呀
解决方案十三:
引用11楼qustbit的回复:
Quote: 引用9楼StefaniGaga的回复:
Quote: 引用3楼qustbit的回复:
LZ把完整的错误信息粘贴出来吧Exceptioninthread"main"java.lang.UnsupportedOperationException:TheusermustsupplyaJDBCconnectionatorg.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)atorg.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)atorg.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)atorg.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)atorg.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)atorg.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)atStudentTest.main(StudentTest.java:16)主类是这个语句报错:session.beginTransaction();
配置文件中数据库url后面没有端口号呀
引用11楼qustbit的回复:
Quote: 引用9楼StefaniGaga的回复:
Quote: 引用3楼qustbit的回复:
LZ把完整的错误信息粘贴出来吧Exceptioninthread"main"java.lang.UnsupportedOperationException:TheusermustsupplyaJDBCconnectionatorg.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)atorg.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)atorg.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)atorg.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)atorg.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)atorg.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)atStudentTest.main(StudentTest.java:16)主类是这个语句报错:session.beginTransaction();
配置文件中数据库url后面没有端口号呀
我加上去了。引用10楼xmt1139057136的回复:
看看你的驱动jar包存在不,数据库的连接jar包。断点跟踪一下,看看connection是否获取到了。
我试试。
解决方案十四:
引用10楼xmt1139057136的回复:
看看你的驱动jar包存在不,数据库的连接jar包。断点跟踪一下,看看connection是否获取到了。
是不是jdbc驱动包坏了?资源加进去也没用?
解决方案十五:
不是你这个事没有源码文件,这个不是jdbc驱动包坏了。
解决方案:
<hibernate-configuration><session-factory><propertyname="dialect">org.hibernate.dialect.Oracle9iDialect</property><propertyname="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><propertyname="connection.url">jdbc:oracle:thin:@XX.XX.XXX.XX:1521:XXX</property><mappingresource="hibernate/TblScheduleTemplate.hbm.xml"/></session-factory></hibernate-configuration>
正确的配置
解决方案:
引用15楼xmt1139057136的回复:
<hibernate-configuration><session-factory><propertyname="dialect">org.hibernate.dialect.Oracle9iDialect</property><propertyname="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><propertyname="connection.url">jdbc:oracle:thin:@XX.XX.XXX.XX:1521:XXX</property><mappingresource="hibernate/TblScheduleTemplate.hbm.xml"/></session-factory></hibernate-configuration>正确的配置
我是用mysql配置文件是我从文档copy改的能给个没有mysql的对比一起么?
解决方案:
引用13楼StefaniGaga的回复:
Quote: 引用10楼xmt1139057136的回复:
看看你的驱动jar包存在不,数据库的连接jar包。断点跟踪一下,看看connection是否获取到了。是不是jdbc驱动包坏了?资源加进去也没用?
楼至,我刚才试了一下你的程序,问题应该是出在第一句了。newConfiguration直接去调用了setProperty去设置了方言,但是没有调用configure方法,导致了配置文件中的配置信息无法加载,获取不到连接的相关信息。将第一句修改为如下形式:Configurationcfg=newConfiguration().configure();cfg.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect");这样应该就可以了。
解决方案:
1.首先数据库名是自己的吧,即自己拥有的数据库。2.端口没错吧3.localhost去掉,或者换成自己电脑的ip。
解决方案:
<!--数据库连接--><propertyname="ibernate.connection.url">jdbc:mysql:///hibernate_test</property>中间有问题jdbc:mysql://localhost:3306/hibernate_test其中localhost是数据库所在主机的IP地址,本机就是localhost,3306是默认端口号hibernate_test是你对应的数据库名,你本机上的数据库服务启动了没有?或者再重新启动下再检查下你的用户名以及密码,按照你的写法是数据库装在你自己的机器上并且有个数据库的名称是hibernate_test
解决方案:
引用19楼xmt1139057136的回复:
<!--数据库连接--><propertyname="ibernate.connection.url">jdbc:mysql:///hibernate_test</property>中间有问题jdbc:mysql://localhost:3306/hibernate_test其中localhost是数据库所在主机的IP地址,本机就是localhost,3306是默认端口号hibernate_test是你对应的数据库名,你本机上的数据库服务启动了没有?或者再重新启动下再检查下你的用户名以及密码,按照你的写法是数据库装在你自己的机器上并且有个数据库的名称是hibernate_test
引用19楼xmt1139057136的回复:
<!--数据库连接--><propertyname="ibernate.connection.url">jdbc:mysql:///hibernate_test</property>中间有问题jdbc:mysql://localhost:3306/hibernate_test其中localhost是数据库所在主机的IP地址,本机就是localhost,3306是默认端口号hibernate_test是你对应的数据库名,你本机上的数据库服务启动了没有?或者再重新启动下再检查下你的用户名以及密码,按照你的写法是数据库装在你自己的机器上并且有个数据库的名称是hibernate_test
你说的我都试了查了一遍。另外控制台提示的是session.beginTransaction();这条语句出错。
解决方案:
将第一句修改为如下形式:Configurationcfg=newConfiguration().configure();cfg.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect");这个试试
解决方案:
引用21楼qustbit的回复:
将第一句修改为如下形式:Configurationcfg=newConfiguration().configure();cfg.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect");这个试试
Exceptioninthread"main"org.hibernate.InvalidMappingException:Couldnotparsemappingdocumentfromresourcecom/web/hibernate/model/Student.hbm.xmlatorg.hibernate.cfg.Configuration.addResource(Configuration.java:616)atorg.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1635)atorg.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1603)atorg.hibernate.cfg.Configuration.doConfigure(Configuration.java:1582)atorg.hibernate.cfg.Configuration.doConfigure(Configuration.java:1556)atorg.hibernate.cfg.Configuration.configure(Configuration.java:1476)atorg.hibernate.cfg.Configuration.configure(Configuration.java:1462)atStudentTest.main(StudentTest.java:11)Causedby:org.hibernate.MappingException:classcom.web。hibernate.model.Studentnotfoundwhilelookingforproperty:idatorg.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:232)atorg.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:302)atorg.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:423)atorg.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:356)atorg.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:295)atorg.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:166)atorg.hibernate.cfg.Configuration.add(Configuration.java:716)atorg.hibernate.cfg.Configuration.addInputStream(Configuration.java:551)atorg.hibernate.cfg.Configuration.addResource(Configuration.java:613)...7moreCausedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Studentatjava.net.URLClassLoader$1.run(URLClassLoader.java:200)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:188)atjava.lang.ClassLoader.loadClass(ClassLoader.java:307)atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)atjava.lang.ClassLoader.loadClass(ClassLoader.java:252)atjava.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)atjava.lang.Class.forName0(NativeMethod)atjava.lang.Class.forName(Class.java:169)atorg.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)atorg.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:228)...15more
解决方案:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到
解决方案:
引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到
web后面怎么是一个句号呢?
解决方案:
引用24楼qustbit的回复:
Quote: 引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到web后面怎么是一个句号呢?
+10086
解决方案:
引用24楼qustbit的回复:
Quote: 引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到web后面怎么是一个句号呢?
这个好逗
解决方案:
引用24楼qustbit的回复:
Quote: 引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到web后面怎么是一个句号呢?
引用24楼qustbit的回复:
Quote: 引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到web后面怎么是一个句号呢?
这个我在myeclipse没显示句号可能是论坛回复的问题出现乱码了吧、
解决方案:
引用26楼csucaicai的回复:
Quote: 引用24楼qustbit的回复:
Quote: 引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到web后面怎么是一个句号呢?
这个好逗
是配置出了问题,lz把Student.hbm.xml和Student.java贴出来看看。
解决方案:
引用28楼qustbit的回复:
Quote: 引用26楼csucaicai的回复:
Quote: 引用24楼qustbit的回复:
Quote: 引用23楼qustbit的回复:
Causedby:java.lang.ClassNotFoundException:com.web。hibernate.model.Student????确认一下Student.java,提示是找不到web后面怎么是一个句号呢?
这个好逗
是配置出了问题,lz把Student.hbm.xml和Student.java贴出来看看。
<?xmlversion="1.0"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mappingpackage="com.web。hibernate.model"><classname="Student"><idname="id"></id><propertyname="name"></property><propertyname="age"></property></class></hibernate-mapping>packagecom.web.hibernate.model;publicclassStudent{privateintid;privateStringname;privateintage;publicStudent(){}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}}
解决方案:
LZ,我把你贴的代码和配置文件在我本机跑了一遍,在Student.hbm.xml中配置的package=“com.web。hibernate.model”如果web后面是英文的点,整个程序没有问题,如果web后面是中文的句号,就会报你在22楼所贴出来的错误,还是检查一下配置文件吧,是不是不小心敲错了,将点敲成了中文的句号。