【问题标题】:SAXParseException in Hibernate mapping休眠映射中的 SAXParseException
【发布时间】:2013-12-20 16:40:55
【问题描述】:

我想通过 hbm2java 从 hibernate 映射文件生成类,但出现以下错误:

SAXParseException;行号:11;列号:15;元素类型“class”的内容必须匹配“(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp) )?,(属性|多对一|一对一|组件|动态组件|属性|任何|地图|集合|列表|袋|idbag|数组|原始数组),(( join,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*, (query|sql-query)*)"。

映射文件内容为:

01    <?xml version="1.0"?>
02    <!DOCTYPE hibernate-mapping PUBLIC
03      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
04          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
05 
06    <hibernate-mapping package="test">
07 
08        <class name="phone" table="phone">
09                <property name="studentid" column="student_id" type="integer"/>
10                <property name="phone" column="number" type="string"/>          
11        </class>
12 
13    </hibernate-mapping>
  • 我错过了什么?
  • 如何解释错误?什么是:?*
  • 是否有任何免费的验证器/编辑器可以帮助我填写 xml?

(不知何故,eclipse在大纲视图中没有显示任何内容......)

提前致谢。

Cs

【问题讨论】:

  • 一开始也有一个Id,但也许后来我又犯了一个错误,我通过消除得到了这个表格。因此,如果我专注于没有 * 或 ? 的部分,我可以找到它。非常感谢。

标签: xml hibernate


【解决方案1】:

* 表示:预期有 0​​、1 个或多个前面类型的元素。

? 表示需要 0 或 1 个上述类型的元素。

Nothing 表示预期的正是上述类型之一。

因此,您需要在任何 property 元素之前添加一个 idcomposite-id 元素 ((id|composite-id))。

【讨论】:

    【解决方案2】:

    您缺少必需的 id 属性(在两个属性元素之上):

    <class name="phone" table="phone">
        <id column=...
    

    【讨论】:

      猜你喜欢
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2010-11-27
      相关资源
      最近更新 更多