2012-02-21 78 views
0

我正在使用最新的jars进行休眠。 (即hibernate-release-4.0.1.Final) 在以前的版本中,我得到了正确的输出。 我更换了hibernate jar,并且出现异常。休眠无效映射异常

org.hibernate.InvalidMappingException:无法读取XML

我看了一些博客和改变了DOCTYPE到

<?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"> 

仍然是错误仍然存​​在。

我附上我的cfg.xml文件和我的hbm.xml之一(如所有10个不能被附后)

Plez让我有什么问题,什么应该是解决方案。 谢谢

错误:

Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.cluster.action.Action.main(Action.java:19) 
Caused by: org.hibernate.InvalidMappingException: Unable to read XML 
    at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:106) 
    at org.hibernate.cfg.Configuration.add(Configuration.java:474) 
    at org.hibernate.cfg.Configuration.add(Configuration.java:470) 
    at org.hibernate.cfg.Configuration.add(Configuration.java:643) 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:726) 
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2102) 
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2074) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2054) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2007) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1922) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1901) 
    at com.cluster.util.HibernateUtil.<clinit>(HibernateUtil.java:14) 
    ... 1 more 
Caused by: org.dom4j.DocumentException: Error on line 28 of document : Attribute name "cas" associated with an element type "key" must be followed by the ' = ' character. Nested exception: Attribute name "cas" associated with an element type "key" must be followed by the ' = ' character. 
    at org.dom4j.io.SAXReader.read(SAXReader.java:482) 
    at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:76) 
    ... 12 more 

的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> 
      <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
      <property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property> 
      <property name="connection.username">julyaugust</property> 
      <property name="connection.password">julyaugust</property> 
      <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> 
      <property name="show_sql">true</property> 

      <mapping resource="com/cluster/entity/employee.hbm.xml"/> 
      <mapping resource="com/cluster/entity/department.hbm.xml"/> 
      <mapping resource="com/cluster/entity/addressDetails.hbm.xml"/> 
      <mapping resource="com/cluster/entity/addressType.hbm.xml"/> 
      <mapping resource="com/cluster/entity/city.hbm.xml"/> 
      <mapping resource="com/cluster/entity/state.hbm.xml"/> 
      <mapping resource="com/cluster/entity/email.hbm.xml"/> 
      <mapping resource="com/cluster/entity/emailType.hbm.xml"/> 
      <mapping resource="com/cluster/entity/phone.hbm.xml"/> 
      <mapping resource="com/cluster/entity/phoneType.hbm.xml"/> 
     </session-factory> 

    </hibernate-configuration> 

employee.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 
     <!DOCTYPE hibernate-mapping PUBLIC 
      '-//Hibernate/Hibernate Mapping DTD 3.0//EN' 
      'http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd'> 


      <hibernate-mapping package="com.cluster.entity" > 
      <class name="Employee" table="EMPLOYEE"> 
      <id name="intEmployeeID" column="EMPLOYEE_ID"> 
       <generator class="sequence"> 
        <param name="sequence">EMPLOYEE_ID_SEQ</param> 
       </generator> 
      </id> 

      <property name="strFirstName" column = "FIRSTNAME"/> 
      <property name="strLastName" column="LASTNAME"/> 
      <property name="strDateOfBirth" column="DATE_OF_BIRTH"/> 
      <property name="strSalary" column="SALARY"/> 

      <many-to-one name="department" column="DEPARTMENT_ID" not-null = "true"   class = "Department"/> 

      <set name="setAddressDetails" cascade="all" lazy="true"> 
       <key column="EMPLOYEE_ID" not-null="true"></key> 
       <one-to-many class="AddressDetails"/> 
      </set> 

      <set name="setPhones" cascade="all" lazy="true"> 
       <key column="EMPLOYEE_ID" not-null="true" cas></key> 
       <one-to-many class="Phone"/> 
      </set> 

      <set name="seEmails" cascade="all" lazy="true" > 
       <key column="EMPLOYEE_ID" not-null="true"></key> 
       <one-to-many class="Email"/> 
      </set> 

     </class> 

      </hibernate-mapping> 
+0

什么是“cas”?从日志属性名称“cas”与元素类型“key”相关联后,必须后跟'='字符。嵌套异常:与元素类型“key”关联的属性名称“cas”必须后跟'='字符。 – 2012-02-21 14:18:49

回答

2

检查了这一点

 <set name="setPhones" cascade="all" lazy="true"> 
      <key column="EMPLOYEE_ID" not-null="true" **cas**></key> 
      <one-to-many class="Phone"/> 
     </set> 

从您附加的日志“从日志属性名称”cas“与一个元素类型”key“相关联后必须紧跟着'='字符。嵌套异常:与元素类型“键”关联的属性名称“cas”后面必须跟有'='字符。“ 是问题的原因。”

“没有称为”cas“的属性。

+0

uff ...谢谢! 愚蠢的错误... 你有一个非常敏锐的眼睛! – bali208 2012-02-21 14:59:31