`
wzf7065
  • 浏览: 247624 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

H I B E R N A T E 错误集锦

 
阅读更多
原文来源:http://blog.csdn.net/techchan/article/details/3183715

1. 错误:Could not parse mapping document from input stream
解决方法:工程中有某个hbm.xml 文件不规范
我的错误在注释某个属性时,没注释完整,遗留了</property>
说明:只要工程有某个hbm.xml不规范,测试时启动工程都会报这样错误

2. 错误:Duplicate class/entity mapping ConnectExtends.model.StockPutWrhBillDO
我的配置如下:

<!--joined-subclass name="connectextends.model.StockPutWrhBillDO" table="stock_put_wrh_bill">

                      <key column="WRH_BUSINESS_BILL_ID"/>

                      <property name="PUT_WAREHOUSE" column="PUT_WAREHOUSE"/>

                      <property name="PUT_WRH_TYPE" column="PUT_WRH_TYPE"/>

                      <property name="PUT_WRH_DATE" column="PUT_WRH_DATE"/>

                      <property name="OUT_CINAMA_CODE" column="OUT_CINAMA_CODE"/>

               </joined-subclass-->

解决方法:修改对应类的路径

说明:只要工程有某个hbm.xml不规范找不到对应类,测试时启动工程都会报这样错误


3. 错误:WRH_BUSINESS_BILL_ID (should be mapped with insert="false" update="false")
解决方法:
              <!--property name="WRH_BUSINESS_BILL_ID" type="integer">
           <column name="WRH_BUSINESS_BILL_ID">
              <comment></comment>
           </column>
       </property-->


       <many-to-one name="stockWrhBusinessBillDO"
           class="relate.model.StockWrhBusinessBillDO"
           column="WRH_BUSINESS_BILL_ID"
           insert="true"
       update="true"/>
解决方法:<property>与<many-to-one>冲突

                两个设置都对应了字段WRH_BUSINESS_BILL_ID,保留一个,去掉
       <property>即可

注意:    当工程启动,应用了hibernate,hibernate会检查工程中的所有映射文件,只要工程中有某个映射文件不符合映射语法规则,就会抛出异常

4. 错误:invalid mapping     Caused by: org.xml.sax.SAXParseException: The content of element
type "class" must match "(meta*,subselect?,cache?,synchronize*,
comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".

原先hbm.xml 配置:
       <joined-subclass name="animal.model.CatDO" table="cat">
           <key column="id" />
    <property name="catagory" column="catagory" type="java.lang.String"/>
       </joined-subclass>

       <set name="animaldetailDOs"
            table="animaldetail"
            inverse="true"
            cascade="all">

            <key column="animalid"/>

            <one-to-many class="animaldetail.model.AnimaldetailDO"/>
</set>
解决方法:将<set>标签内容放到 <joiner-subclass>前面,即
<set name="animaldetailDOs"
            table="animaldetail"
            inverse="true"
            cascade="all">

            <key column="animalid"/>

            <one-to-many class="animaldetail.model.AnimaldetailDO"/>
</set>
<joined-subclass name="animal.model.CatDO" table="cat">
           <key column="id" />
    <property name="catagory" column="catagory" type="java.lang.String"/>
       </joined-subclass>
说明:每个xml在文档开头设置了文档类型定义(DOCTYPE),标签就要严格按照文档类型定义的顺序使用。


5.  错误:org.hibernate.exception.SQLGrammarException: could not fetch                                initial value for increment generator(使用unnion-subclass 元素时,父类标识属性生成器用 increment 报错)
解决方法:在MySql数据库中,父类标识属性生成器hilo。


6. 错误:exception is org.hibernate.MappingException: Cannot use identity column key generation with <union-subclass> mapping for: subclass.model.UserhistoryDO(使用unnion-subclass 元素时,父类标识属性生成器用 native 报错)
解决方法:在MySql数据库中,父类标识属性生成器hilo。

说明:native是自动去找生成主键的依据,在Oracle中是去找sequence,然后sequence直接用Hibernate_sequence产生oid,不需要进行高低位运算
而在DB2和MySQL等数据库中是去找identity,可能是在找的时候没有找到identity吧

7. 错误:org.hibernate.exception.SQLGrammarException: could not get or update next value    (使用unnion-subclass 元素时,父类标识属性生成器用 hilo,但没有建立对应的id生成表)
解决方法:
           1. <id name="id" column="id" type="java.lang.Integer">
                    <generator class="hilo">
                        <param name="table">my_unique_key</param>
                        <param name="column">next_hi</param>
                    </generator>
            </id>
2. 在数据库中建立表 my_unique_key和字段next_hi ,且next_hi必须有一条记录。

说明:由于Hilo主键生成方式采用的是hilo算法,不必要指定id的(这点和assigned     类似,主键的值由hibernate维护)。但hilo算法需要额外的数据表my_unique_key和字段next_hi(表名和字段名默认是my_unique_key/next_hi,但可以自定义),且next_hi必须有一条记录。
8. 错误:a different object with the same identifier value was already associated with the session
      错误分析: 因为在hibernate中同一个session里面有了两个相同标识但是是不同实体,当这时运行saveOrUpdate(object)操作的时候就会报这个错误
解决方法: 1、a different object with the same identifier value was already associated with the session。
  错误原因:在hibernate中同一个session里面有了两个相同标识但是是不同实体。
  解决方法一:session.clean()
  PS:如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出"Found two representations of same collection"异常。
  解决方法二:session.refresh(object)
  PS:当object不是数据库中已有数据的对象的时候,不能使用session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。
  解决方法三:session.merge(object)
  PS:Hibernate里面自带的方法,推荐使用。
2、Found two representations of same collection
  错误原因:见1。
  解决方法:session.merge(object)
以上两中异常经常出现在一对多映射和多对多映射中

分享到:
评论

相关推荐

    C++Builder_5开发人员指南

    所以只能分成3份传 本书阐述中、高级开发主题,如创建客户/服务器数据库应用程序,编写定制组件,创建I n t e r n e tWe b服务器应用程序,还包括对工业标准规范的支持,如T C P / I P、O L E以及A c t i v e X。...

    C++Builder_5开发人员指南03

    C + + B u i l d e r提供特殊的I n t e r n e t组件,能够更易于处理与特殊的统一资源标识符( U R I)相关 事件和程序化构造H T M L文档。 这部分还提供了关于C + + B u i l d e r的套接字组件的章节,可使...

    手机解锁秘诀-再也不用上营业厅了

    / w% n2 h8 i) c( H, T 如死机再用---24681357(或直接就用它解) ) W8 P$ t" B/ A: l& \1 D  波导8xx/9xx系列:*#+串号7-14位# 9 R+ @/ c( x; g, m, f; K0 [9 Y  SIM卡 波导串号最后9位去掉最后一位 1 i! [2 g'...

    汉语拼音字母表专项练习题[整理].pdf

    第三题应排列为:a c d f h j k l m n o p q r s u v,第四题应排列为:a c d f h j k l m n o r t u v,第五题应排列为:B D H J K L M N P Q U X Y,第六题应排列为:A C E G F H I Q R S T U V W。 二、本部分...

    Allegro DRC 错误代码.docx

    Allegro DRC 错误代码 Allegro DRC 错误代码是一种错误标记系统,用于检查 Printed Circuit Board(PCB)设计中的错误。该系统使用一个字母代码来指示违反了哪种约束类型。每种错误代码都有其特定的约束违例,例如 ...

    微软活动目录管理管理简明手册

    a/ R( W" Q( H+ w7 W' e$ n# [' z7 S (二)活动目录结构 / R1 e, {5 F6 l7 `2 g1.活动目录的逻辑结构 ; {! I/ m% N1 x; b! v: i : g: W2 s% o% A6 {4 x0 B(1)域: ' }' }5 v" y7 @9 K! G _5 Q- _+ f( P0 ] 域(Doamin...

    C++I练习题1带答案(06级).doc

    cout(a+=3,a+b)&lt;&lt;'\t'; } ``` **输出结果:** - `5 8 11 14` 3. **程序:** ```cpp #include&lt;iostream.h&gt; int lcm(int m, int n){ int r,a,b; a=m; b=n; r=m; do{ m=n; n=r; r=m%n; }while(r); return ...

    Altium-Designer-16-快捷键.pdf

    * 网络 -隐藏全部: N,H,A 放置类 * 放置 -坐标: P,O * 放置 -焊盘: P,P * 放置 -字符: P,S * 放置 -过孔: P,V * 放置 -多边形: P,R * 放置 -填充: P,F * 放置 -敷铜: P,G * 放置 -线性尺寸: P,...

    gtk单词计数器

    1、按照规则计算单词的值,如果A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 , 如 WINJACK这...

    C语言的经典试题哦!!!

    static char a[]={'A','B','C','D','E','F'}; char *p; p=&a[0]; printf("%c %c\n",*p,*(p+2)); } ``` 这个程序会输出`A C`。程序中,`*p`表示取指针p所指向的字符,即数组a的第一个元素'A';`*(p+2)`则指向数组...

    人教版小学四年级英语下册第六单元试卷(附答案).pdf

    w hat, w h o se, w h er e, sh o r t, sh o r t s, sh oes, b r ow n, w r o n g, f u n等,这些都是小学四年级学生需要掌握的基本词汇。 2. 听力连线与选择正确答句:这部分考察学生的听力反应和语境理解,例如...

    AD19快捷键大全.pdf

    * 网络-隐藏全部:N,H,A 放置类快捷键包括: * 放置-坐标:P,O * 放置-焊盘:P,P * 放置-字符:P,S * 放置-过孔:P,V * 放置-多边形:P,R * 放置-填充:P,F * 放置-敷铜:P,G * 放置-线性尺寸:P,D,L *...

    WinRAR_4.0.exe

    i[i|c|h|t]=&lt;字符串&gt; 在压缩文件中查找字符串。 支持下列可选参数: i - 不区分大小写(默认); c - 区分大小写搜索; h - 十六进制搜索; t - 使用 ANSI, Unicode 和 OEM 字符表 (只有 Win32 可用); 如果...

    互联网创意产品众筹平台

    v4 Z% p0 }& I+ X* B) t# j │ 8.问题一箩筐-相对路径和绝对路径 │ 9.问题一箩筐-自定义监听器,解决上下文路径使用问题 │ 10.问题一箩筐-重载-笔试题+ i4 I$ j6 d/ [- j: d │ 11.问题一箩筐-悲观锁和乐观锁7 L; ...

    湖北省孝感市重点高中协作体2017_2018学年高二物理下学期期末联考试题

    通过R的电流I_R=U_R/R0=220/1.1=200A,选项A错误。升压变压器输入功率P_in=P_out=U_inI_in,由U_2/U_1=n_2/n_1和P_out=U_2I_2可得,升压变压器输入功率P_in=4.8×10^4W,选项B正确。发电机的输出电压U_in=U_1I_in/n_...

    英语字母书写规则.doc

    小写a, b, c, d, e, g, h, k, l, m, n, o, q, r, s, u, v, w, y, z。 - 两笔完成的字母:如大写B, D, K, M, P, Q, R, T, U, X, Y;小写f, i, j, p, t, x。 - 三笔完成的字母:如大写A, E, F, H, I, N;小写a, e, f...

    AIX V7.1命令参考大全,卷六,v-z(808页)

    语法:vc [-d] [-e] [-h] [-i] [-l] [-n] [-o] [-p] [-q] [-r] [-s] [-t] [-v] [attribute] 参数: * -d:显示详细信息 * -e:编辑模式 * -h:帮助信息 * -i:忽略错误 * -l:长格式 * -n:不显示结果 * -o:输出...

    linux下GTK+2.0开发的单词数值计算器

    1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为1 2 3 4 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 21 22 23 24 25 26, 如 WINJACK这个...

    AD19快捷键大全.docx

    * 网워크 - 隐藏全部:N、H、A 放置快捷键 * 放置 - 坐标:P、O * 放置 - 焊盘:P、P * 放置 - 字符:P、S * 放置 - 过孔:P、V * 放置 - 多边形:P、R * 放置 - 填充:P、F * 放置 - 铜:P、G * 放置 - 线性尺寸...

Global site tag (gtag.js) - Google Analytics