java - 在 hibernate 中处理一对多关系

标签 java hibernate jakarta-ee

我仍在学习 hibernate 可以做什么,这次我正在尝试一些似乎不起作用的东西。 我有 2 个表 users 和contacts。你可以猜测联系人通过将 user_id 作为外键来保持关系。这是两个映射文件的片段。 第一个来自 users.hbm.xml

<set name="contactsdetails">
  <key column="userId"/>
  <one-to-many class="Domain.Contacts"/>
</set>

这个来自contacts.hbm.xml

<many-to-one class="Domain.Users" name="userId"/>

虽然一切正常,我的意思是配置、映射文件端以及从 UsersDAO 插入用户表,但我想同时插入用户和联系人。 意思是我创建我的用户对象并为各种属性分配值,创建一个或一组联系人并为其分配各种属性,最后在保存用户对象之前将其添加到用户的 contactdetails 设置属性中。当我尝试这样做时,我意识到这有点奇怪,因为联系人 userId 属性是用户类型,所以我将用户添加到联系人或每个联系人对象,然后在保留用户对象之前将相同的联系人对象添加到用户的 contactdetails 属性中。我确定我错过了一些东西,我'当我尝试时,我遇到了 nullpointerexcpetion。你能告诉我该怎么做吗?感谢您的阅读

最佳答案

当实体 A 指向实体 B,实体 B 指向实体 A 时,您就拥有了 hibernate 所谓的双向映射。这些可能很棘手,你必须小心,并告诉 hibernate 一方“拥有”这种关系。

参见the Bidirectional associations section of the hibernate docs关于如何管理这些协会。

关于java - 在 hibernate 中处理一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1143892/

相关文章:

java - C++ 程序员是否模拟 Java 的特性?

java - 未知表大小时如何在HQL中进行限制查询?

java - 抽象父类(super class)的 Hibernate (JPA) 继承映射

java - @PostConstruct 与 Jersey 1.17、Weblogic 一起使用

java - 不知道如何调用和打印 ASCII art 方法

java - 将 WebServiceTemplate 与 keystore 一起使用

java - ArrayList<Class> 中的 String[]

java - JPA/Hibernate persist 似乎不起作用

mysql - Glassfish 4 身份验证(JDBCRealm 和 JPA 2)适用于 Dery,但不适用于 MySQL

java - ejb 定时器服务与 cron