Hibernate双向@ManyToOne,更新非拥有方不起作用

2023-12-11

我有一个非常简单的设置来尝试带有注释的双向映射:

@Entity
public class TypeA extends AbstractModel<TypeA> {

    @Id
    @GeneratedValue
    private int id;

    @OneToMany(mappedBy="a")
    private Collection<TypeB> bs;

    // Getters & Setters ... 
}

and

@Entity
public class TypeB extends AbstractModel<TypeB> {

    private static final long serialVersionUID = -3526384868922938604L;

    @Id
    @GeneratedValue
    private int id;

    @ManyToOne()
    @JoinColumn(name="a_id")
    private TypeA a;
}

当我设置属性 TypeA.bs 时,这不会影响映射,尽管它应该影响映射。请参见以下示例:

TypeB b = new TypeB();
this.typeBDao.save(b);

TypeA a = new TypeA();
a.setBs(ListUtils.createList(b));

System.out.println(a.getBs()); // output: [TypeB@25fe4d40]

this.typeADao.save(a);

System.out.println(a.getBs()); // output: [TypeB@25fe4d40]

this.typeADao.refresh(a);

System.out.println(a.getBs()); // output: []

this.typeBDao.refresh(b);
System.out.println(b.getA()); // output: null

如果映射是双向的,则应填充集合并更新 b 的属性 a,但事实并非如此。有任何想法吗?

Edit感谢各位的帮助,现在我明白了!


对于一致的域模型,您应该始终设置关系的两侧,如下所示:

TypeB b = new TypeB();

TypeA a = new TypeA();
a.setBs(ListUtils.createList(b));
b.setA(a);   

this.typeBDao.save(b);
this.typeADao.save(a);

当您的实体处于不一致状态时,JPA 将始终根据 JPA 关系拥有方的对象状态来存储值。在这种情况下,TypeB 拥有与 TypeA 的关系。因此,如果 TypeB 的对象没有对 TypeA 的引用,JPA 会假定没有定义关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate双向@ManyToOne,更新非拥有方不起作用 的相关文章

  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • eclipse中导入项目文件夹图标

    我在 Eclipse 工作区中新导入的 Maven 项目有J and M项目文件夹顶部的图标 项目和包资源管理器 而其他导入的 Maven 项目只有一个J icon 有人可以解释其中的区别吗 该项目有J装饰器被称为 Java 项目和具有M装
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部

随机推荐

  • 以编程方式创建组:无法通过迁移访问权限

    看到后这个帖子 我尝试通过此迁移在项目设置中创建自己的组 from django db import migrations from django contrib auth models import Group Permission de
  • Discord C# 用户加入消息

    我正在使用 C 中的 Discord Net 来制作一个机器人 到目前为止 我的机器人运行得非常好 但我希望它在用户加入特定服务器时自动为他们分配特定角色 我从未真正学过任何 C 只学过一点 C 所以我知道基本语法 我该怎么办呢 我假设我会
  • 如何针对 R 中的大型矩阵有效计算所有可能组合的归一化比率?

    我想为 R 中的大矩阵有效计算所有可能组合的归一化比率 我之前问过类似的问题here并且在数据较少的情况下 那里提供的解决方案效果很好 但是 当我尝试对大型数据集 400 x 2151 应用相同的解决方案时 我的系统挂起 我的系统配备 16
  • JavaScript - 使用 childNode 遍历 HTML DOM 在非 IE 浏览器中会导致错误

    我的浏览器中呈现了下表 它是从服务器端生成的 table class tblQuestionsContainer border 0 tr td class tdQuestion Are u an indian citizen td tr t
  • Gson 库和 Proguard

    我遇到了 proguard 和 Gson 库的问题 我的代码是 AdServerResult result AdServerResult new Gson fromJson json AdServerResult class 我创建了一个新
  • 为 MIPS 编译 Linux 内核 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一台 32 位 MIPS 机器 想在上面运行 Linux 我需要使用我的 Windows 7 机器将 Linux 交叉编译为 MIPS 我对如何解决这个问题感到困惑 有人可以
  • 使用内部联接的简单 hql 命名查询

    我想在我的域 实体对象中做这样的事情 Entity NamedQueries NamedQuery name favouriteCats query from Cat c inner join on UserCat uc where uc
  • 编码麻烦 - 一种格式到另一种格式

    我有一个抓取工具正在从其他地方收集一些我无法控制的数据 源数据包含各种有趣的 Unicode 字符 但它将它们转换为一种非常无用的格式 因此 u00e4 对于带有元音变音的小 a 没有我认为应该存在的双引号 当然 这会在我的 HTML 中以
  • 比较方法违反了它的一般契约!仅限 Java 7

    我知道这个问题已经有一段时间了 并检查了我之前能得到的所有答案 但这个仍然不起作用 对象 crew 代表具有等级和其他项目的船员 应通过比较 int 值 signed rank 来进行比较 如果两个实例中该值相等 则布尔值 is train
  • Javascript - 在网站上创建文本文件

    所以我有一个网页 我想以编程方式在我的网站上的新目录中创建一个文本文件 假设它包含 你好 我是一个文本文件 该程序将位于网站的另一个目录中 e g https www example com txtbuild html正在尝试以编程方式制作
  • Angular 2 中带有 Observable 的 http 无法使用数据

    我是 Angular 2 和 Observables 的新手 但我想尝试一下 所以我安装了 angular cli 并做了一个简单的测试项目 我想要它做的就是读取一个 json 文件并处理组件内部的数据 第一个目的是提供服务 但我想从低基础
  • 如何在 Sitecore DMS 中触发配置文件?

    我正在寻找一种方法 允许访问者选择他们想要在网站上显示的内容 有没有办法以编程方式触发 Sitecore DMS 中的配置文件 我查看了SDN上的相关文档 http sdn sitecore net Reference Sitecore 6
  • graphql 中的空手道替换

    我不确定为什么替换不起作用 我有一个 graphql 查询 mutation updateLocation updateLocation input address
  • 为什么 Integer("09") 在 ruby​​ 中抛出异常,而 Integer("07") 工作得很好?

    我使用的是红宝石1 9 3 为什么 Integer 09 在 ruby 中抛出 Integer 异常的无效值 而 Integer 07 工作得很好 提前致谢 因为前导零是八进制 基数 8 表示法的常见约定 没有9八进制数字 因此使用 1 是
  • 在 JavaScript 中进行简单的运输和处理计算

    我在进行简单的 JavaScript 计算时遇到了麻烦 我的文档应该在订单金额为 25 美元或以下时添加 1 50 美元 如果订单金额超过 25 美元 则添加订单的 10 确切的问题是 许多公司通常会对购买的商品收取运费和手续费 创建一个网
  • SSIS For Each File 循环和文件系统任务复制文件

    我在 for every 循环容器内使用文件系统任务 如下所述 链接文本 但是 当我执行该包时 出现此错误 文件系统任务 错误 发生错误 并显示以下错误消息 该进程无法访问文件 C Book1 xlsx 因为该文件正在被另一个进程使用 我没
  • JSON 到 Java 对象,对 json 流进行建模的最佳实践

    我有一个由当前正在开发的服务器端 C 程序生成的 JSON 流 我已经获得了生成的 JSON 的示例 我担心我必须手动解析 json 我将无法使用 GSON 或 Jackson 等工具提供的普通类映射 请看一下他们提供的以下 有些 人为的示
  • 用 pandas 填充信号时保留原始数据点

    考虑以下测试数据集 testdf pandas DataFrame t datetime 2015 1 1 10 0 datetime 2015 1 1 11 32 datetime 2015 1 1 12 0 val 1 2 3 我想使用
  • JAVA使用Selenium时如何禁用Javascript?

    我正在使用 Selenium 通过 JAVA 进行网络测试 我想在 Firefox 浏览器 Google Chrome 浏览器 IE 浏览器上停止 JavaScript 我在 Firefox 浏览器上尝试了这段代码 FirefoxProfi
  • Hibernate双向@ManyToOne,更新非拥有方不起作用

    我有一个非常简单的设置来尝试带有注释的双向映射 Entity public class TypeA extends AbstractModel