当前位置: 首页 > 知识库问答 >
问题:

Hibernate一对一映射错误

宦琪
2023-03-14

我正在使用与共享主键一对一映射。

<class name="EmployeeDetails" table="EMPLOYEE_DETAILS" >
    <cache usage="nonstrict-read-write"/> 
    <id name="employeeId" type="java.lang.Long">
        <column name="EMPLOYEE_ID" precision="12" scale="0" />
        <generator class="foreign">
            <param name="property">employee</param>
        </generator>
    </id>
    <property name="score" type="java.math.BigDecimal" update="true">
        <column name="SCORE" />
    </property>
    <one-to-one name="employee" class="Employee" constrained="true"/>
</class>
    <one-to-one name="employeeDetails" class="EmployeeDetails" cascade="all,delete-orphan"></one-to-one>

共有1个答案

万俟高峻
2023-03-14

我可以像下面这样解决这个问题-

        EmployeeDetails employeeDetails= employee.getEmployeeDetails();

        if(employeeDetails!= null){
            employeeDetails.setScore(statusVO.getScore());
        }
        else {
            employeeDetails = new EmployeeDetails(statusVO.getScore());
            employeeDetails.setEmployee(employee);
        }
        employeeDetailsService.saveOrUpdate(employeeDetails);

关键在于,当employeeDetails存在于db(以及Employee object)中时,只需更新属性,当它不设置Employee object时,hibernate将使用从Employee object中提取的正确id进行插入。

 类似资料:
  • 问题内容: 我正在尝试在Hibernate中将一对一关系映射为“零或一个”关系。我想我可能已经找到了使用多对一方法。 A类的映射指定: B类的映射指定: 我想在数据库中找不到B的匹配行时b为null。所以我可以做到这一点(在A类中): 但是,看来b永远不会为空。 我该怎么办? 问题答案: 答案是在A中的多对一语句中添加not-found =“ ignore”: 我尝试按照Rob H的建议,简单地向

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

  • 下面的映射给出的错误为 从db.karateInvoiceDetail引用db.karateInvoice的外键的列数错误。应为1 想法是有一个表,它的组合键为(id、fiscalyear和companyId),而表的组合键为(seqNo、InvoiceId、InvoiceFiscalYear和InvoiceCompanyId)。

  • 问题内容: 如何在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对象的主类。