Aqi*_*mid 8 java mysql hibernate
这是关于java hibernate的问题.
我hibernate.cfg.xml是
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/poc</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password"/>
<mapping class="test.person" file="" jar="" package="" resource="person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
与数据库的连接正常,我可以探索数据库和表,
我的样本
person.hbm.xml 是
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-mapping>
<class name="test.person" table="person">
<id name="id" type="int" column="id" >
<generator class="assigned"/>
</id>
<property name="fName">
<column name="fName" />
</property>
<property name="lName">
<column name="lName"/>
</property>
<property name="age">
<column name="age"/>
</property>
<property name="gender">
<column name="gender"/>
</property>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
这是我的班级
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package test;
public class person {
private int id;
private String fName;
private String lName;
private String gender;
private int age;
public person() {
System.out.println("person");
}
public int getId() {
return id;
}
public int getAge() {
return age;
}
public String getfName() {
return fName;
}
public String getGender() {
return gender;
}
public String getlName() {
return lName;
}
public void setId(int id) {
this.id = id;
}
public void setAge(int age) {
this.age = age;
}
public void setfName(String fName) {
this.fName = fName;
}
public void setGender(String gender) {
this.gender = gender;
}
public void setlName(String lName) {
this.lName = lName;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的主课程
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Test {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Session session = null;
SessionFactory sessionFactory =new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
person obj = new person();
obj.setfName("Aqif");
obj.setlName("Hamid");
obj.setAge(24);
obj.setGender("Male");
session.save(obj);
session.flush();
session.close();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到这个例外,
SEVERE: JDBC Driver class not found: org.apache.derby.jdbc.ClientDriver
java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at test.Test.main(Test.java:15)
Exception in thread "main" org.hibernate.HibernateException: JDBC Driver class not found: org.apache.derby.jdbc.ClientDriver
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at test.Test.main(Test.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61)
... 7 more
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
请帮我解决这些例外情况
我不知道为什么我会得到这个例外
java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
Run Code Online (Sandbox Code Playgroud)
我的hibernate.cfg.xml是为MySQL数据库设置的
编辑:
文件的位置,
它位于.java文件的根目录下
C:.....的NetBeansProjects \测试\ SRC
那是我项目的src文件夹.
和java文件在
C:.....的NetBeansProjects \测试的\ src \测试
我已经尝试过将我的hibernate.cfg.xml文件复制到其他一些位置.
该hibernate.cfg.xml必须存在于类路径的根.Hibernate使用当前线程的上下文类加载器来定位和加载此文件.这意味着:
Test类在JAR中,那么配置文件必须位于JAR的根目录下.Test该类位于目录中/classes/test/Test.class,那么hibernate.cfg.xml必须存在于该目录中/classes.您当前的问题很可能是由于hibernate.cfg.xmlHibernate定位并加载了另一个文件.如果在类路径的根目录中找不到配置文件,则可以执行此操作; 然后,Hibernate将配置文件的加载委托给Environment类的类加载器,直到找到配置文件.为避免这种情况,您必须确保所需的配置文件(包含MySQL相关属性)必须存在于类路径的根目录中.
| 归档时间: |
|
| 查看次数: |
82332 次 |
| 最近记录: |