Hibernate 的一个小问题
我写的第一个hibernate程序,helloworld就出错了,不知道为啥,求大神指教~~~
首先附上我的hibernate.cfg.xml 配置:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/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/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<mapping resource="HibernateModel/student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
以及我的student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package=HibernateModel">
<class name="student" >
<id name="id" >
<generator class="native"/>
</id>
<property name="age"/>
<property name="name"/>
</class>
</hibernate-mapping>
以下是测试类:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import HibernateModel.student;
public class StudentTest {
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
public static void main(String[] args) {
student s = new student();
s.setId(1);
s.setAge(1);
s.setName("wang");
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
session.close();
sessionFactory.close();
}
}
运行之后报这种错误信息
Exception in thread "main" org.hibernate.InvalidMappingException: Unable to read XML
at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:109)
at org.hibernate.cfg.Configuration.add(Configuration.java:478)
at org.hibernate.cfg.Configuration.add(Configuration.java:474)
at org.hibernate.cfg.Configuration.add(Configuration.java:647)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:730)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2115)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2087)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2067)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2020)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1935)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1914)
at StudentTest.main(StudentTest.java:26)
Caused by: org.dom4j.DocumentException: Error on line 6 of document : Open quote is expected for attribute "{1}" associated with an element type "package". Nested exception: Open quote is expected for attribute "{1}" associated with an element type "package".
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78)
... 11 more
我查过报名什么的都没错啊,这个错误是什么意思啊???求诸位大神指教~~~~~ hibernate
[解决办法]
<hibernate-mapping package=HibernateModel">没看到少个引号吗?改为
<hibernate-mapping package="HibernateModel">
[解决办法]
注意看错误:
Caused by: org.dom4j.DocumentException: Error on line 6 of document
Open quote is expected for attribute "{1}" associated with an element type "package". Nested exception: Open quote is expected for attribute "{1}" associated with an element type "package".
指出错误位置在16号,原因是domu4j解析xml文档错误,属性package的值要求一个开头的引号,但文档中没有
<hibernate-mapping package=HibernateModel">
一看就是笔误了,少一个引号
[解决办法]
正解!
[解决办法]
package=HibernateModel"
左边少了引号