How can I fix my /hibernate.cfg.xml file?

旧城冷巷雨未停 提交于 2019-12-13 06:53:10

问题


I'm attempting to follow this tutorial: https://www.youtube.com/playlist?list=PL4AFF701184976B25

I've gotten to video five expecting to see hibernate successfully adding to my mysql database, but I'm instead getting this error. Below that is my hibernate.cfg.xml file.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2246)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2158)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2137)
    at org.koushik.hibernate.HibernateTest.main(HibernateTest.java:15)
Caused by: org.dom4j.DocumentException: Error on line 19 of document  : Open quote is expected for attribute "{1}" associated with an  element type  "name". Nested exception: Open quote is expected for attribute "{1}" associated with an  element type  "name".
    at org.dom4j.io.SAXReader.read(SAXReader.java:482)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2238)
    ... 3 more

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
   <session-factory>
   <!-- Database connection settings -->
   <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
   <property name="connection.url">jdbc:mysql://localhost/hibernatedb</property>
   <property name="connection.username">root</property>
   <property name="connection.password">mysqlroot</property>

   <property name="connection.pool_size">1</property>

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

   <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

   <property name=show_sql>true</property>
   <property name="hbm2ddl.auto">create</property>
   <mapping class="org.koushik.javabrains.dto.UserDetails" />
</session-factory>
</hibernate-configuration>

What could the problem be and how can I go about fixing it? I can't tell if it can't find my file, or if something is syntactically wrong within it.

Also, I'd be very grateful if someone could point me towards some working Hibernate tutorials for Hibernate 4.3.7. All I've found so far is a mixture of broken/heavily out dated materials that require installing past versions of hibernate to learn from.

Edit-------------------

I attempted to validate in Eclipse and this error appears at line 8 saying "The document type declaration for root element type "hibernate-configuration" must end with '>'." Also, this line is the only line where the "connection..." doesn't appear in blue, and the name part of property name doesn't appear in purple. Feels like a syntax error but I can't seem to find it.

Edit 2------------------ Here are my two files

UserDetails.java

package org.koushik.javabrains.dto;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class UserDetails {
    @Id
    private int userId;
    private String userName;

    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

HibernateTest.java

package org.koushik.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.koushik.javabrains.dto.UserDetails;

public class HibernateTest {

    public static void main(String[] args) {
        UserDetails user = new UserDetails();
        user.setUserId(1);
        user.setUserName("First User");

        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();
    }

}

回答1:


Try this:

<?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.connection.driver_class">com.mysql.jdbc.Driver</property>
       <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernatedb</property>
       <property name="hibernate.connection.username">root</property>
       <property name="hibernate.connection.password">mysqlroot</property>
       <property name="hibernate.connection.pool_size">1</property>
       <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
       <property name="hibernate.hbm2ddl.auto">create</property>
       <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
       <property name="show_sql">true</property>
       <mapping class="org.koushik.javabrains.dto.UserDetails" />
    </session-factory>
</hibernate-configuration>


来源:https://stackoverflow.com/questions/26854213/how-can-i-fix-my-hibernate-cfg-xml-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!