`
lk557
  • 浏览: 142395 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HIBERNATE错误集锦

 
阅读更多

1. 错误:Could not parse mapping document from input stream

解决方法:工程中有某个hbm.xml 文件不规范

我的错误在注释某个属性时,没注释完整,遗留了</property>

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

2. 错误:Duplicate class/entitymapping ConnectExtends.model.StockPutWrhBillDO

我的配置如下:

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

<keycolumn="WRH_BUSINESS_BILL_ID"/>

<propertyname="PUT_WAREHOUSE" column="PUT_WAREHOUSE"/>

<propertyname="PUT_WRH_TYPE" column="PUT_WRH_TYPE"/>

<propertyname="PUT_WRH_DATE" column="PUT_WRH_DATE"/>

<propertyname="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">

<columnname="WRH_BUSINESS_BILL_ID">

<comment></comment>

</column>

</property-->

<many-to-onename="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-subclassname="animal.model.CatDO" table="cat">

<keycolumn="id" />

<property name="catagory"column="catagory" type="java.lang.String"/>

</joined-subclass>

<setname="animaldetailDOs"

table="animaldetail"

inverse="true"

cascade="all">

<key column="animalid"/>

<one-to-manyclass="animaldetail.model.AnimaldetailDO"/>

</set>

解决方法:将<set>标签内容放到<joiner-subclass>前面,即

<set name="animaldetailDOs"

table="animaldetail"

inverse="true"

cascade="all">

<key column="animalid"/>

<one-to-manyclass="animaldetail.model.AnimaldetailDO"/>

</set>

<joined-subclass name="animal.model.CatDO"table="cat">

<keycolumn="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 incrementgenerator

(使用unnion-subclass元素时,父类标识属性生成器用 increment 报错)

解决方法:在MySql数据库中,父类标识属性生成器hilo。

6. 错误:exception is org.hibernate.MappingException: Cannot use identity columnkey 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 nextvalue

(使用unnion-subclass元素时,父类标识属性生成器用 hilo,但没有建立对应的id生成表)

解决方法:

1.<id name="id" column="id"type="java.lang.Integer">

<generator class="hilo">

<paramname="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 wasalready associated with the session

错误分析:因为在hibernate中同一个session里面有了两个相同标识但是是不同实体,当这时运行saveOrUpdate(object)操作的时候就会报这个错误

解决方法: 1、a different object with the same identifier value was alreadyassociated 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 samecollection

  错误原因:见1。

  解决方法:session.merge(object)

以上两中异常经常出现在一对多映射和多对多映射中


分享到:
评论

相关推荐

    hibernate错误解决方案

    本文将针对几个常见的Hibernate错误进行深入分析,并提供相应的解决方法。这些错误包括但不限于 `org.springframework.orm.ObjectRetrievalFailureException`、`org.springframework.beans.factory....

    Hibernate错误及解决办法集合

    ### Hibernate常见错误及解决办法 #### 一、Nodefaultconstructorforentity 错误 **问题描述**:在使用Hibernate执行查询语句时,系统抛出`Nodefaultconstructorforentity`错误。 **可能原因**:该错误通常是由于...

    hibernate错误示例一

    标题“Hibernate错误示例一”表明我们将探讨在使用Hibernate这个流行的Java对象关系映射(ORM)框架时可能会遇到的问题。Hibernate允许开发人员将Java对象与关系数据库中的表进行映射,简化了数据操作,但同时也可能...

    hibernate,struts,spring 常见错误信息

    一、Hibernate错误 Hibernate是Java持久层框架,它简化了数据库操作。常见的错误包括: 1. **配置错误**:如XML配置文件中的实体映射错误、数据源配置错误等,可能导致SessionFactory无法创建。 2. **SQL异常**:...

    hibernate常见错误解决方案

    ### Hibernate常见错误解决方案 在开发基于Hibernate框架的应用程序时,我们经常会遇到各种各样的异常情况。这些异常不仅会影响系统的正常运行,还可能增加调试难度。本文将针对几个常见的Hibernate异常进行详细...

    Hibernate配置常见错误

    《Hibernate配置常见错误详解》 Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,在实际开发过程中,由于配置问题,开发者常常会遇到各种错误,这些错误可能导致程序...

    Hibernate几个常见错误解决方式

    在使用Hibernate进行数据库操作时,可能会遇到各种错误。这些错误通常是由于配置问题、SQL语法错误、类型不匹配或实体属性与数据库映射不一致导致的。以下是对标题和描述中提及的一些常见错误及其解决方法的详细说明...

    Hibernate,hibernate笔记

    如果遇到错误,例如配置错误导致browse无法选择正确的项目目录,可能需要手动修改`.project`文件的natures部分,确保包含Hibernate的nature。 总的来说,Hibernate是Java开发中的重要工具,它通过ORM解决了数据库...

    MyEclipse+hibernate错误:Could not get list of suggested identity strategies from database解决

    总之,解决"MyEclipse+hibernate错误:Could not get list of suggested identity strategies from database"问题需要从数据库连接、Hibernate配置、JDBC驱动等多个方面排查,通过仔细分析错误信息和尝试不同的解决...

    hibernate3 hibernate3

    如果发生错误,可以调用rollback()回滚事务。 6. 关闭Session:每次操作完毕,记得关闭Session以释放资源。 总结起来,Hibernate3是Java开发中的强大工具,它极大地简化了数据库操作,提高了开发效率。理解并熟练...

    hibernate aip hibernate aip

    9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity passed to persist 等,并配置合适的日志系统,如Log4j或SLF4J,以便追踪应用运行状态。 总的来说,Hibernate AIP涵盖了从项目初始...

    hibernate错误汇总

    错误原因:在Hibernate中,当你试图将一个对象属性映射为集合,比如一个用户有多个角色,通常会使用标签来定义。如果在前端页面尝试显示这些角色作为下拉选择时,可能由于集合未正确加载或配置不完整,导致下拉框...

    Hibernate4.0,Hibernate5.2,Hibernate5.6 jar包

    5.6版本还提供了更好的类型安全性和错误检查,减少了运行时错误的可能性。对于大数据量的处理,增加了批量操作和流式API的支持,以提高效率。此外,此版本还增强了对NoSQL数据库的支持,反映了现代应用程序多样化的...

    Could not roll back Hibernate transaction.doc

    Hibernate的事务回滚机制是指在事务执行过程中,遇到错误或异常时,Hibernate可以自动回滚事务,以确保数据库的一致性和完整性。Hibernate的事务回滚机制可以避免数据库的一致性和完整性问题。 六、总结 本文详细...

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    然而,在使用 Hibernate 进行数据库操作时,经常会遇到 "No Hibernate Session bound to thread" 的错误信息。本文将详细介绍该错误的解决方案。 错误原因 "No Hibernate Session bound to thread" 错误信息通常是...

    达梦Hibernate方言2.0至4.0

    开发人员可以通过Java对象直接操作数据库,提高了开发效率,同时减少了数据库依赖相关的错误。 压缩包文件“DmDialect2.0-4.0”可能包含了不同版本的方言实现,如源代码、配置文件或者文档,用于指导开发人员如何在...

    达梦 Hibernate 方言 2.0 至 4.0

    6. **错误修复**:每个版本迭代通常会包含对已知问题的修复,确保了方言的稳定性和可靠性。 从提供的压缩包文件名来看,"24.jpg"可能是一个示例或说明图,而"DmDialect2.0-4.0.rar"很可能包含了详细的技术文档或者...

Global site tag (gtag.js) - Google Analytics