gpt4 book ai didi

java - hibernate : Inserting data set missing parameters to null in database

转载 作者:行者123 更新时间:2023-12-01 09:46:08 26 4
gpt4 key购买 nike

当我尝试插入我的对象之一时,hibernate 检测到我的对象中缺少对象属性并将关系设置为 null我的数据库由以下部分组成:

  Hall      Usine       Users_Usines    User
hallID usineID userID userID
usineID usineID

为了创建一个大厅,我使用:

hall = mapper.readValue(hallData, Hall.class);
long res = hallDAO.create(hall);

在 DAO 中执行的代码是:

 Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
int id = (int) session.save(object);
transaction.commit();
session.clear();
session.close();
HibernateUtil.closeCurrentSession();

我的问题是我的大厅有一个“Usine”,但我的“Usine”的“users”属性丢失,因此 hibernate 将我的Users_Usines表设置为空。

我通过自己编写语句而不是使用 session.update(object) 修复了更新中的类似问题,但我发现 INSERT 语句不支持 INSERT VALUES 格式。

如何解决?谢谢!

最佳答案

问题似乎与 hibernate 无关,而是您如何从这个映射器填充Hall对象的结果,我认为它是某种类型的JSON库也许吧。

您是否确认 hallData 包含当 Hibernate 插入数据时在数据库级别形成该关系所需的所有相关信息?从目前所显示的情况来看,这似乎并非如此。

每当您收到此 hallData 时,如果您打算在数据库中创建一个全新的 Hall 实例,那么它必须是绝对且完整的。 Hibernate 只知道您提供的信息,因此没有它,就无法建立这种关系。

如果 hallData 是部分的,并且您的目的是更新现有记录,那么您需要首先从以下位置加载 Hall:数据库,将从映射器读取的更改合并到实例中,然后调用save。这将有效地维护现有状态并仅更改 hallData 中提供的字段。

关于java - hibernate : Inserting data set missing parameters to null in database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com