当前位置: 首页 > 面试题库 >

Hibernate一对一或一对一映射

宣冥夜
2023-03-14
问题内容

我正在尝试在Hibernate中将一对一关系映射为“零或一个”关系。我想我可能已经找到了使用多对一方法。

class A {
  private B b;
  // ... getters and setters
}

class B {
  private A a;
}

A类的映射指定:

<many-to-one name="b" class="B" 
insert="false" update="false" 
column="id" unique="true"/>

B类的映射指定:

<one-to-one name="a" class="A" constrained="true"/>

我想在数据库中找不到B的匹配行时b为null。所以我可以做到这一点(在A类中):

if (b == null)

但是,看来b永远不会为空。

我该怎么办?


问题答案:

答案是在A中的多对一语句中添加not-found =“ ignore”:

<many-to-one name="b" class="B" not-found="ignore" insert="false" update="false" column="id" unique="true"/>

我尝试按照Rob H的建议,简单地向B添加lazy =“
false”,但是每次加载不带B的A时,都会导致HibernateObjectRetrievalFailureException。

请参阅本主题以获取更多信息:

https://forum.hibernate.org/viewtopic.php?p=2269784&sid=5e1cba6e2698ba4a548288bd2fd3ca4e



 类似资料:
  • 我正在使用与共享主键一对一映射。

  • 1. 前言 本节课程和大家一起聊聊关联映射。通过本节课程的学习,你将了解到: 什么是关联映射; 如何实现一对一关联映射。 2. 关联映射 关系数据库中的数据以表为家,一张表一个家,一个家住一类数据。众多表组成关系型社区,关系型社区群体中的数据关系通过主外键方式描述。 表与表之间的数据根据彼此的关系可分为: 一对一关系: 如老公表和老婆表的关系; 一对多关系: 如用户表和银行账号表关系; 多对一关系

  • 我有示例代码来检查双向关系是如何工作的。 我可以看到这种表h2表:- A:- B:- 对于B表,我期待一个列,正如我在代码中提到的。 所以我在我的控制器中,如果我试图检索B,如下所示:- 它就像一条链条,一条链条,一条链条。我正在学习hibernate和表的关系。显然我误解了什么。我的目的是双向的,当我加载A时,我可以访问相关的B。同样,当我加载B时,我可以访问相关的A。我如何实现这个目标?

  • 问题内容: 如何在hibernate的hbm文件中创建可选的一对一映射?例如,假设我有一个User和一个last_visited_pa​​ge表。用户可能有也可能没有last_visited页面。这是我当前在hbm文件中的一对一映射: 用户类别: LastVisitedPage类: 上面的示例不允许创建没有最后访问页面的用户。新创建的用户尚未访问任何页面。如何更改hbm映射以使userPrefs映

  • 有两张数据表,其中A表的某个字段的值指向B表的主键。因为A表的任何一条记录只能对应B表的一条且唯一一条记录,所以称这种 映射为A表对B表数据的一对一映射。(当然,反过来,你也可是说,是B表对A表的一对多映射)。 上述结构,如果用 POJO 来表示的话,可以参看下图: 如上图, Pet 中就可以有一个字段 master,通过自身的 masterId 指向一个 Master 对象,那么我们说 Pet.

  • 我试图在Hibernate中的两个表之间创建一对一的单向主键关系。我使用xml Maaping,下面是我的java POJO类和它们各自的。hbm文件。 储物柜POJO类 locker.hbm.xml 下面是我用来保存student和locker对象的主类。