元素类型的内容" id"必须匹配"(元*,列*,类型?,生成器?)")

时间:2013-11-15 09:24:16

标签: hibernate

我在hibernate类中遇到错误。 元素类型“id”的内容必须匹配“(meta *,column *,type?,generator?)”

映射类:

        

<class name="com.subex.models.Issues" table="ISSUES">

  <id name="id" type="integer" column="id" >
     <generator class="native"/>
     <param name="sequence">ISSUES_Seq</param>
  </id>

     <property name="brief" type="string" column="brief"/>
    <property name="description" type="string" column="description"/>
    <property name="module" type="string" column="module"/>
    <property name="version" type="string" column="version"/>
    <property name="site" type="string" column="site"/>
    <property name="posted_by" type="string" column="posted_by"/>
</class>

请协助。

3 个答案:

答案 0 :(得分:2)

<id name="id" type="integer" column="id" >
   <generator class="native"/>                <!-- 1 -->
   <param name="sequence">ISSUES_Seq</param>  <!-- 2 -->
</id>

请删除第二行并检查。看起来你已经为单个bean /实体使用了两个ID生成策略(如果我没有错)

答案 1 :(得分:0)

<param>是生成器的内部元素,因此您必须这样做:

<id name="id" type="integer" column="id" >
 <generator class="native">
     <param name="sequence">ISSUES_Seq</param>
 <generator>
</id>

或者更好,因为您使用序列:

<id name="id" type="integer" column="id" >
 <generator class="sequence">
     <param name="sequence">ISSUES_Seq</param>
 <generator>
</id>

答案 2 :(得分:0)

问题出在这里的xml标记格式不正确。

在您的xml中,param标记不在generator标记内。

<id name="id" type="integer" column="id" >
     <generator class="native"/>
     <param name="sequence">ISSUES_Seq</param>
  </id>

正确的做法是:

<id name="id" type="integer" column="id" >
     <generator class="native">
          <param name="sequence">ISSUES_Seq</param>
     <generator>
</id>