如果在Hibernate项目里面配了很多many-to-one的关联,即使后台在查询数据时已经作了健全性判断,但还是会经常抛出对象找不到异常:org.hibernate.ObjectNotFoundException: No row with the given identifier exists。

比如系统在用户的使用过程中,数据库表的数据会常发生变化,最常见的是人员变化,原先引用的User在数据库表没了,而Hibernate做了多对一关联,多的这端引用的一的那端,一旦引用值在一的那端找不到数据,默认就会抛出异常,而后台判断却控制不了此问题。

Hibernate Reference有介绍到,在多对一关系中,即many-to-one标签元素中有一个属性not-found,用来指定引用的外键不存在时将如何处理。

not-found属性有两个候选值:

1.exception(默认)抛出异常。

2.ignore,忽略异常,不抛出异常。

<many-to-one name="project" column="projId"
class="com.toone.yanggb.model.Project" not-found="ignore"/>

在不配置这个属性的情况下,Hibernate会采用默认的抛出异常来处理;当配置了not-found属性并将值设置为ignore之后,就可以取消关联外键引用数据丢失抛异常的设置。

另外的,Spring/Hibernate还提供有@NotFound注解,效果和not-found属性相当。

@NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(cascade = {CascadeType.PERSIST}, targetEntity = Topic.class)
@JoinColumn(name = "topic_id", updatable = false)
@NotFound(action = NotFoundAction.IGNORE)
private Topic topic;

"喜欢就像乘法一样,只要一方为零,结果便为零。"

最新文章

  1. Spring事务管理的三种方式
  2. gulp删除文件和文件夹
  3. jQuery构造函数init参数分析(三)
  4. 12. javacript高级程序设计-DOM2和DOM3
  5. 【转】Android M(6.0) 权限爬坑之旅
  6. MongoDB中的连接池
  7. intersection-of-two-arrays-ii
  8. CF_402C Searching for Graph 乱搞题
  9. 怎么通过IE连接本机oracle数据库
  10. C# Http POST get
  11. 【原】iOS 获取当前和 前后n天的日期
  12. 每天一个Linux命令(10)--cat命令
  13. 苹果APP发布
  14. Phaser文档访问不了,下载英文版文档到本地,已经共享在国内网站上面
  15. Python 遇到的坑
  16. 给datagridview的下拉框添加valueChange事件
  17. Docker:Dockerfile命令详解
  18. nginx配置分发Tomcat服务,负载均衡
  19. python中内建函数isinstance的用法
  20. WCF错误:413 Request Entity Too Large 的一个解决方法

热门文章

  1. Linux下实现不活动用户登录超时后自动登出
  2. shuffle调优
  3. git tag介绍
  4. [linux] 进程五状态模型
  5. nodejs简单http日志存储
  6. visual studio之X64调试问题
  7. unsigned int数据类型最大数
  8. 为什么tcp的TIME_WAIT状态要维持2MSL
  9. MySQL拓展 视图,触发器,事务,存储过程,内置函数,流程控制,索引,慢查询优化,数据库三大设计范式
  10. Ubuntu下apache2安装配置(内含数字证书配置)