2017-06-23 42 views
0

我有下一个错误,而试图使用Hibernate在数据库中添加用户:异常线程“main” org.hibernate.service.spi.ServiceException:无法创建请求的服务休眠错误

WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) 
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) 
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) 
    at Main.main(Main.java:16) 
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver] 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:348) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:160) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:116) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:100) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) 
    ... 14 more 
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:336) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:345) 
    ... 26 more 

这里是我的用户等级:

@Entity 
public class User { 

@Id 
private int id; 
private String username; 
private String password; 
private String address; 
private String email; 
private String phone; 
private int year; 
private String type; 


public User(int id, String username, String password, String address,String email, String phone, int year, String type) 
    { 
     this.id=id; 
     this.username=username; 
     this.password=password; 
     this.address=address; 
     this.email=email; 
     this.phone=phone; 
     this.year=year; 
     this.type=type; 
    } 


public User() { 
    // TODO Auto-generated constructor stub 
} 


public int getId() { 
    return id; 
} 


public void setId(int id) { 
    this.id = id; 
} 


public String getUsername() { 
    return username; 
} 


public void setUsername(String username) { 
    this.username = username; 
} 


public String getPassword() { 
    return password; 
} 


public void setPassword(String password) { 
    this.password = password; 
} 
//here are more getters and setters.. 

那么它的Hibernate配置文件:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration SYSTEM 
"http://www.hibernate.org/dtd/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> 

     <!-- Assume test is the database name --> 
     <property name="hibernate.connection.url"> 
      jdbc:mysql://localhost:3306/licenta 
     </property> 
     <property name="hibernate.connection.username"> 
      root 
     </property> 
     <property name="hibernate.connection.password">root</property> 
     <mapping resource="user.hbm.xml" /> 

    </session-factory> 
</hibernate-configuration> 

和主要方法:

public static void main(String[] args) 
    { 

     User u=new User(); 
     u.setId(1); 
     u.setUsername("lalalla"); 
     SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); 
     Session session = sessionFactory.openSession(); 
     session.beginTransaction(); 
     session.save(u); 
     session.getTransaction().commit(); 

     session.close(); 

    } 

这里是所有这一切我已经安装了的JAR enter image description here enter image description here

我不能找到解决这个持续休眠版本的JAR文件。你们可以帮我吗?

谢谢!

回答

0

此错误

Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver 

意味着你不必在classpath为MySQL JDBC驱动程序。我检查了你的罐子,我没有找到它。所以你应该把这个jar添加到classpath中。

你可以找到一个连接器有https://dev.mysql.com/downloads/connector/j/

或者,如果你用maven:

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.6</version> 
</dependency> 
相关问题