Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate和MySQL配置_Java_Mysql_Eclipse_Hibernate_Hibernateexception - Fatal编程技术网

Java Hibernate和MySQL配置

Java Hibernate和MySQL配置,java,mysql,eclipse,hibernate,hibernateexception,Java,Mysql,Eclipse,Hibernate,Hibernateexception,我花了几个小时试图设置我的第一个Hibernate应用程序,但它仍然不起作用 我有WAMP服务器和MySQL数据库,称为“hibernatetest”。我在Eclipse中有一个项目,它包含Hibernate库和mysql-connector-java-5.1.18-bin.jar。我还参加了以下课程: HibernateUtil.java: import org.hibernate.SessionFactory; import org.hibernate.boot.registry.Stand

我花了几个小时试图设置我的第一个Hibernate应用程序,但它仍然不起作用

我有WAMP服务器和MySQL数据库,称为“hibernatetest”。我在Eclipse中有一个项目,它包含Hibernate库和mysql-connector-java-5.1.18-bin.jar。我还参加了以下课程:

HibernateUtil.java:

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory(
                new StandardServiceRegistryBuilder().build() );
        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}
java(包含main):

Album.java:

package templates;

public class Album {
    private int ID;
    private String title;
    private String artist;
    private String label;

    public Album(){

    }

    public int getID() {
        return ID;
    }

    public void setID(int iD) {
        ID = iD;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

}
Album.hbm.xml:

Hibernate.cfg.xml:

堆栈跟踪:

wrz 15, 2015 10:04:47 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.0.1.Final}
wrz 15, 2015 10:04:47 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
wrz 15, 2015 10:04:47 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
wrz 15, 2015 10:04:47 PM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead.  Support for obsolete DTD/XSD namespaces may be removed at any time.
wrz 15, 2015 10:04:48 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.0.Final}
wrz 15, 2015 10:04:49 PM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService
WARN: HHH000181: No appropriate connection provider encountered, assuming application will be supplying connections
wrz 15, 2015 10:04:49 PM org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService
WARN: HHH000342: Could not obtain connection to query metadata : The application must supply JDBC connections
Initial SessionFactory creation failed.org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Exception in thread "main" java.lang.ExceptionInInitializerError
    at HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
    at HibernateUtil.<clinit>(HibernateUtil.java:7)
    at test.main(test.java:13)
Caused by: 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:244)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
    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:217)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
    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:692)
    at HibernateUtil.buildSessionFactory(HibernateUtil.java:12)
    ... 2 more
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)
    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:234)
    ... 15 more
wrz 152015 10:04:47 PM org.hibernate.Version logVersion
信息:hh000412:Hibernate核心{5.0.1.Final}
wrz 152015 10:04:47 PM org.hibernate.cfg.Environment
信息:HH000206:找不到hibernate.properties
wrz 152015 10:04:47 PM org.hibernate.cfg.Environment buildBytecodeProvider
信息:HH000021:字节码提供程序名称:javassist
wrz 152015 10:04:47 PM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver解析实体
警告:HH90000012:已识别过时的hibernate命名空间http://hibernate.sourceforge.net/hibernate-configuration. 使用名称空间http://www.hibernate.org/dtd/hibernate-configuration 相反对过时的DTD/XSD命名空间的支持可以随时删除。
wrz 152015 10:04:48 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager
信息:HCANN000001:Hibernate Commons注释{5.0.0.Final}
wrz 152015 10:04:49 PM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService
警告:HH000181:假设应用程序将提供连接,则未遇到适当的连接提供程序
wrz 152015 10:04:49 PM org.hibernate.engine.jdbc.env.internal.jdbc环境启动器initiateService
警告:HH000342:无法获取查询元数据的连接:应用程序必须提供JDBC连接
初始SessionFactory创建失败。org.hibernate.service.spi.ServiceException:无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
线程“main”java.lang.ExceptionInInitializeError中出现异常
位于HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
在HibernateUtil。(HibernateUtil.java:7)
at test.main(test.java:13)
原因:org.hibernate.service.spi.ServiceException:无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.jdbc环境]
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml.configure(jdbcservicesiml.java:51)
位于org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
位于org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
位于org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
位于org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
位于org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
位于org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
位于HibernateUtil.buildSessionFactory(HibernateUtil.java:12)
... 还有两个
原因:org.hibernate.HibernateException:未设置“hibernate.dialogue”时,对方言解析信息的访问不能为空
位于org.hibernate.engine.jdbc.dialogue.internal.dialoguefactorympl.determineDialect(dialoguefactorympl.java:100)
位于org.hibernate.engine.jdbc.dialogue.internal.dialogueFactoryImpl.buildDialogue(dialogueFactoryImpl.java:54)
位于org.hibernate.engine.jdbc.env.internal.jdbconvironmentinitiator.initiateService(jdbconvironmentinitiator.java:137)
位于org.hibernate.engine.jdbc.env.internal.jdbconvironmentinitiator.initiateService(jdbconvironmentinitiator.java:35)
位于org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234)
... 还有15个

我做错了什么?

正如错误所说,您需要在hibernate.cfg文件中指定方言

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
org.hibernate.dialogue.mysqldialogue

我注意到一些可能导致故障的因素:

1) 在
hibernate.cfg.xml中,您没有为连接指定密码。您可以在此处添加
your\u Pass\u
属性(或者是出于隐私原因而添加的?)

2) 正如@Prerak Tiwari所提到的,您没有指定方言。正如他在
org.hibernate.dialogue.mysqldialogue
属性中提到的那样

3) 我注意到你们房产的名称与大多数人使用的不同。不要添加
…name=“hibernate.connection.driver\u class”…
ommit
hibernate.
部分,因此它应该如下所示:

<session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost/hibernatetest</property>
    <property name="connection.username">root</property>
    Your password property here...
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    <mapping resource="/templates/Album.hbm.xml"/>
</session-factory>

com.mysql.jdbc.Driver
jdbc:mysql://localhost/hibernatetest
根
您的密码属性在此。。。
org.hibernate.dialogue.mysqldialogue

希望其中一些对您有用:)

这就是我修复错误的方法

我的环境与您的相同
hibernate5+
Mysql
&
WAMP服务器

  • 请确保您包括在此位置包含的
    jta jar
    \hibernate-release-5.0
    
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/hibernatetest</property>
        <property name="connection.username">root</property>
        Your password property here...
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    
        <mapping resource="/templates/Album.hbm.xml"/>
    </session-factory>
    
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_db</property>
    
    <property name="connection.password">root</property>