`
wzf7065
  • 浏览: 240184 次
  • 性别: 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)
以上两中异常经常出现在一对多映射和多对多映射中

分享到:
评论

相关推荐

    Python入门教程6.pdf

    Error and exception handling 错误和异常处理 7 1 程序的错误 P r o g r a m e r r o r 2 异常处理 E x c e p t i o n h a n d l i n g 3 断言处理 A s s e r t i o n p r o c e s s i n g CONTENT 4 程序的基本...

    C++复习资料之系列

    (a)++(a++) (b)a++b (c)a+++b (d)a++++b 23.已知i=0,j=1,k=2,则逻辑表达式 ++i||--j&&++k的值为( b )。 (a) 0 (b)1 (c)2 (d)3 24. 执行下列语句后,x的值是( d ),y的值是( c )。 int ...

    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'...

    系统分析师数据库系统(一).docx

    第14题: A.H I,H J,J K,IJK L,L H B.H I,H J,J K,IJ L,L H C.H I,H J,J K,IJ L,J K D.H I,J K,IJ L,L H,L K 参考答案:B 第15题: A.1 B.2 C.3 D.4 参考答案:C 第16题: A.1NF B.2NF C.3NF D.

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

    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 程序指导书及实践指导

    s=h[f(a)+f(b)]/2+hf(a+kh)其中,h=(b-a)/n 3. 用递归方法编写程序,求n阶勒让德多项式的值,递归公式为 1 (n=0) pn(x)=x (n=1) ((2n-1)xpn-1(x)-(n-1)pn-2(x))/n (n&gt;1) , [ 分析讨论] 1. 小结函数的定义及调用...

    Linux综合实验(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...

    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这...

    互联网创意产品众筹平台

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

    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这个...

    最新JAVA编程题全集_50题及答案

    写一个函数,例如:给你的 a b c 则输出 abc acb bac bca cab cba import java.util.ArrayList; import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";...

    LINUX与UNIX_Shell编程指南

    设置c r o n t a b文件,并用它来提交作业。 ? 使用a t命令来提交作业。 ? 在后台提交作业。 ? 使用n o h u p命令提交作业。 第4章文件名置换 ? 匹配文件名中的任何字符串。 ? 匹配文件名中的单个字符。 ? 匹配...

    2010年考研英语单词象形记忆法

    name n【门-连接】,a【元音字母“a、e、i、o、u、y”和“元音字母组合”很多情况下都是表达一个单词的声音,就像汉字形声字的声旁,可以没有含义,可以不解释】,m【移动-跟随】,e【辅音字母+e结尾,表明前面的声...

    数据结构(C++)有关练习题

    查询班机起飞降落时间,班机订票情况等3个功能,并实现菜单选项 5、 用C++编写一个简单的行编辑器,每个结点保存一行文本,程序以E file开始,然后显示行数和提示符,如果输入I,后面跟着一个数字n,就在第n行之前...

    语言程序设计课后习题答案

    cout &lt;&lt; "The size of a float is:\t\t" (float) &lt;&lt; " bytes.\n"; cout &lt;&lt; "The size of a double is:\t" (double) &lt;&lt; " bytes.\n"; return 0; } 程序运行输出: The size of an int is: 4 bytes. The size of a ...

    数据结构题

    (B) P,A,C,S,Q,D,F,X,R,H,M,Y (C) A,D,C,R,F,Q,M,S,Y,P,H,X (D) H,C,Q,P,A,M,S,R,D,F,X,Y 39.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前...

    From C to C++

    cout, i am not "&lt;&lt;a&lt;&lt;" years old.\n"; } // ----------- class pupil: public child{ char book[20]; public: pupil(char *n,int a,char *b); void list(); }; // --- pupil::pupil(char *n,int a,char *b): ...

    《数据结构 1800题》

    10.在下面的程序段中,对x的赋值语句的频度为__t(n)=O(n3)____(表示为 n的函数) FOR i:=1 TO n DO FOR j:=1 TO i DO FOR k:=1 TO j DO x:=x+delta; 【北京工业大学 1999 一、6(2分)】 ...

Global site tag (gtag.js) - Google Analytics