急 hibernate总是报错 求大神指导
刚开始学hibernate
错误信息
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ExceptionInInitializerError
at cn.hongle.hibernate.Many2Many.add(Many2Many.java:47)
at cn.hongle.hibernate.Many2Many.main(Many2Many.java:14)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource cn/hongle/domain/Student.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
at cn.hongle.hibernate.HibernateUtils.<clinit>(HibernateUtils.java:17)
... 2 more
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:502)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
... 9 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 48; Element type "Set" must be declared.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499)
... 10 more
hibernate.cfg.xml:
<?xml version="1.0"?>
<!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="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://192.168.0.15:1433;DatabaseName=hibernate</property>
<property name="connection.username">sa</property>
<property name="connection.password">123</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="cn/hongle/domain/Student.hbm.xml"/>
<mapping resource="cn/hongle/domain/Teacher.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Teacher.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="cn.hongle.domain">
<class name="Teacher" table="teacher">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<Set name="students" table="teacher_student" inverse="true">
<key column="teacher_id"/>
<many-to-many class="Student" column="student_id"/>
</Set>
</class>
</hibernate-mapping>
Student.hbm.xml:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="cn.hongle.domain">
<class name="Student" table="student">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<Set name="teachers" table="teacher_student">
<key column="student_id"/>
<many-to-many class="Teacher" column="teacher_id"/>
</Set>
</class>
</hibernate-mapping>
Many2Many.java
package cn.hongle.hibernate;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.hongle.domain.Student;
import cn.hongle.domain.Teacher;
public class Many2Many {
public static void main(String[] args) {
add();
}
static void add(){
Session s=null;
Transaction tx=null;
try{
Set<Teacher> ts = new HashSet<Teacher>();
Teacher t1 = new Teacher();
t1.setName("t1 name");
ts.add(t1);
Teacher t2 = new Teacher();
t2.setName("t2 name");
ts.add(t2);
Set<Student> ss = new HashSet<Student>();
Student s1 = new Student();
s1.setName("s1");
ss.add(s1);
Student s2 = new Student();
s2.setName("s2");
ss.add(s2);
t1.setStudents(ss);
t2.setStudents(ss);
s1.setTeachers(ts);
s2.setTeachers(ts);
s = HibernateUtils.getSession();
tx = s.beginTransaction();
s.save(t1);
s.save(t2);
s.save(s1);
s.save(s2);
tx.commit();
}finally{
if(s!=null)
s.close();
}
}
}