`

.org.hibernate.ObjectNotFoundException: No row with the given identifier exists

阅读更多

说到底,就是外键关联引起的问题。

 

问题产生原因:
有一个对象A,关联了对象B ,关联关系可以使 ManyToOne,OneToOne等,如果我们在数据库中清除了B对象,但是B对象还在A表中存在外键,这时候Hibernate检查这个关系的时候,会报出这个异常。但是A与B在数据库为范围内不能耦合过紧,只能pojo中建立关联关系,此时要注意,清除A表中的外键,可以解决此问题,一般的垃圾数据会造成业务系统不能正常运转。

第二个原因:
查询的时候,假设对象A与B有着一对一的关系,一般我们配置
@OneToOne
@JoinColumn(name = "xxx"),如果B被删除了,但是A中还维护这个外键关系
要配置
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "xxx")
的模式,不知道为什么默认不是lazy的,还要配置一下fetch = FetchType.LAZY

分享到:
评论

相关推荐

    使用Hibernate开发租房系统第12章课件包含代码

    11. 异常处理:熟悉Hibernate抛出的常见异常,如ConstraintViolationException、ObjectNotFoundException等,以及如何适当地捕获和处理它们。 12. 性能优化:探讨如何通过配置优化、缓存利用、批处理等策略提升...

    hibernate或nhibernate文档

    6. 异常处理:理解Hibernate特有的异常体系,如ConstraintViolationException和ObjectNotFoundException。 二、NHibernate:.NET平台的ORM利器 1. 概述:NHibernate是Hibernate在.NET平台上的移植版本,同样提供了...

    java框架之hibernate

    - 如果数据库中不存在该对象,则会抛出`org.hibernate.LazyInitializationException`或`org.hibernate.ObjectNotFoundException`异常。 - 使用`load()`可以提高性能,因为它减少了不必要的数据库访问。 2. **Get...

    Hibernate配置[归类].pdf

    Hibernate是一款流行的Java ORM(对象关系映射)框架,它允许开发者将数据库操作抽象化,以对象的方式进行处理,简化了数据库编程。以下是对`Hibernate配置[归类].pdf`文件中涉及的几个主要知识点的详细解释: ### ...

    Hibernate的通用dao

    **标题:“Hibernate的通用DAO”** 在Java编程领域,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,从而减少了对SQL的直接依赖。通用DAO(Data Access Object)是一...

    2022年Hibernate面试题剖析.doc

    【Hibernate 概述】 Hibernate 是一个流行的开源对象关系映射(ORM)框架,它为 Java 程序员提供了一种方便的方式来操作数据库,通过将 Java 类与数据库表进行映射,使得程序员可以用面向对象的方式来处理数据。ORM...

    常见hibernate面试题.doc

    在后续使用该对象的属性时,会抛出`org.hibernate.ObjectNotFoundException`异常。此外,`load()`支持懒加载,即只有在真正需要使用对象时才会触发数据库查询。 - **`get()`**:此方法也用于加载对象。但如果数据库...

    Hibernate查询解决方案

    如果找不到对应的记录,将会抛出 `org.hibernate.ObjectNotFoundException` 异常。 - `load(Class<T> theClass, Serializable id)`:根据类类型和主键加载对象。 - `load(Class<T> theClass, Serializable id, ...

    hibernate 延迟加载.docx

    【hibernate 延迟加载】 在Java的持久化框架Hibernate中,延迟加载(Lazy Loading)是一种优化数据库访问性能的技术。它允许我们在需要时才加载关联的对象,而不是在初始查询时就一次性加载所有数据。这有助于减少...

    S-S-H工作原理

    - 与get类似,但在对象不存在时抛出`ObjectNotFoundException`异常。 - 支持延迟加载(Lazy Loading),即在真正需要时才加载数据。 #### Spring框架的IOC容器实现 Spring框架的核心是其IOC(Inversion of ...

    hibernate面试题

    - 如果数据库中不存在指定ID的对象,则返回一个代理对象,并在尝试访问其属性时抛出`org.hibernate.ObjectNotFoundException`异常。 - 支持延迟加载,即只有在实际使用对象时才会触发数据库查询。 #### 三、...

    hibernate面试题总会

    【hibernate面试题总汇】 hibernate 是一个强大的对象关系映射(ORM)框架,它的核心功能在于将Java对象的数据映射到关系数据库中,使得开发人员能够以面向对象的方式来处理数据库操作,而无需过多关注底层的SQL...

    hibernate操作数据库笔记

    //该方法将到classpath下解析hibernate.cfg.xml中的配置,如果不用Hibernate默认的配置文件名和路径,可在该方法中指定Hibernate配置文件的名称和路径 2.用Configuration对象获取SessionFactory和Session对象:...

    Hibernate帮助文档

    - Hibernate提供了丰富的异常体系,如ConstraintViolationException(约束违反)、ObjectNotFoundException(对象未找到)等,有助于调试和错误处理。 ### 8. 性能优化 - 使用批处理更新和查询,减少数据库交互...

    Hibernate和Mybatis

    【Hibernate和Mybatis】是两种常用的Java持久层框架,它们主要负责在业务逻辑层处理数据库的持久化操作,简化了开发者对数据库的访问和管理。 **Hibernate原理:** 1. Hibernate通过`Configuration().configure();`...

    Hibernate几种获数据方法比较

    在Java开发领域,Hibernate作为一款流行的ORM(对象关系映射)框架,提供了多种获取数据库数据的方法,每种方法都有其独特的优势和适用场景。本文将深入探讨Hibernate中的几种主要的数据获取方式,包括`Session.get...

    hibernate get load区别

    如果通过代理对象尝试获取数据时发现数据不存在,则会抛出`org.hibernate.ObjectNotFoundException`异常。这种设计使得`load`方法更适合于那些确信数据存在的场景。 3. **支持懒加载**:由于`load`方法返回的是代理...

    常见hibernate面试题

    【Hibernate 框架面试详解】 1. **Hibernate 查询数据的方式** - 导航对象图查询:通过对象之间的关联关系直接获取数据。 - OID 查询:基于对象标识符(Object Identifier)查找对象。 - HQL(Hibernate Query ...

    hibernate数据库访问接口设计

    Hibernate 抛出的异常通常继承自 `HibernateException`,如 `ConstraintViolationException`(违反约束)和 `ObjectNotFoundException`(对象未找到)。理解这些异常并适当地处理它们,对于编写健壮的代码至关重要。...

Global site tag (gtag.js) - Google Analytics