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

Hibernate:插入引用现有父记录的子记录

程冥夜
2023-03-14

我有一个父表和子表。父记录已由其他进程插入。我需要添加引用父记录的子记录,例如:

PARENT
===========
PARENT_ID   PK
ADDRESS     UNIQUE

CHILD
===========
CHILD_ID   PK
PARENT_ID  FK
ADDRESS    UNIQUE

插入CHILD记录时,引用父记录的唯一信息是地址。我需要从父表中获取PARENT_ID,使用子的ADDRESS来设置子的FK。

在hibernate中有没有一种方法可以做到这一点,这样我就不需要通过地址查询父项来将其与子记录一起插入?或者,我是否继续沿着这条路径,按地址查询父对象,然后将父对象传递给子对象?

共有1个答案

戚兴思
2023-03-14

在我看来,您应该明确地按地址读取父对象,然后将该引用设置到子对象中并保存子对象。

否则,您将不得不使用某种本机查询,这应该是最后的手段,因为您将失去解决方案的可移植性。

您将只剩下一个本机查询,因为HQL批量操作(如UPDATE)不支持连接...既不是隐式的,也不是显式的,您需要这些操作来在单个查询中执行整个操作。

依我看,电话是你的。

 类似资料:
  • 我有两个实体类,如下所示- 我在保存子记录时出错。 错误- Hibernate:插入子(名称,child\u id)值(?,)2022-07-19 23:12:31.727警告20940---[nio-8080-exec-2]o.h.engine.jdbc.spi。SqlExceptionHelper:SQL错误:0,SQLState:23502 2022-07-19 23:12:31.727错误

  • 我在使用zkoss和hibernate时遇到了一个问题 我有两个模型一个是少年信息另一个是学校测量 在学校里,我建立了一种多人的关系 当我进入 SessionFactory SessionFactory=新配置()。configure()。buildSessionFactory(); 会话会话=会话工厂。openSession();一场beginTransaction();列表结果1=会话。cre

  • 问题内容: 我的数据库表中具有以下格式的数据: 该列将来自该列的数据作为父记录。带有值的表示根项目。我需要编写查询以按以下顺序获取数据: 我需要得到根记录(与记录为0),然后是所有和这根记录,然后获得下根的记录,然后和在这个根记录等等。 问题答案: 我在这里提出的解决方案使用了物化路径的概念。以下是使用样本数据的实例化路径的示例。我希望它可以帮助您理解物化路径的概念: 每个节点都有一个实例化路径,

  • 我正在尝试使用Hibernate 4.3和SQL Server 2014,仅对尚未存储的实体执行批量插入到表中。我创建了一个简单的表,其中定义了一个主键来忽略重复的键 尝试通过Stateless会话插入方法执行批处理插入,如果一个或多个实体已经存储到数据库表中,则批处理插入可能会失败:Hibernate抛出StaleStateException: 当批处理语句完成时,Hibernate会检查返回的

  • OrientDB是一个NoSQL数据库,可以存储文档和面向图形的数据。 NoSQL数据库不包含任何表,那么要如何将数据作为记录插入?在这里,您可以以类,属性,顶点和边的形式查看表数据,类表就像表,属性就像表中的文件。 可以在OrientDB中使用模式定义所有这些实体。 属性数据可以被插入到一个类中。 插入命令在数据库模式中创建一条新记录。 记录可以无模式或遵循一些指定的规则。 以下语句是“插入记录

  • 问题内容: 一个活动有很多参与者。参与者的字段为“状态”。 我需要找到除以下事件以外的所有事件:每个参与者的状态都为“出席”的事件。 我可以找到带有以下AR代码的某些参与者处于“呈现”状态的所有事件: 这样就创建了SQL: 这 几乎 可行。问题是,如果参与者的某行(在范围内 )的状态为“离开”,则该事件仍将被获取,因为至少某些同级记录的状态与其他状态相同而不是“现在”。 我需要确保我正在过滤所有事