问题
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