java Hibernate:在数据库中将缺少参数的数据集插入为null
当我尝试插入一个对象时,hibernate会检测到对象中缺少的属性,并将relation设置为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”属性丢失,因此hibernates将我的users\u Usines表设置为空
我通过自己编写语句而不是使用会话来修复更新中的类似问题。更新(对象),但我看到INSERT语句不能支持INSERT VALUES格式
如何修复它?谢谢
# 1 楼答案
这个问题似乎与hibernate无关,而是如何从这个
mapper
填充Hall
对象的结果,我假设它可能是某种类型的JSON库您是否确认
hallData
包含在hibernate插入数据时在数据库级别形成关系所需的所有相关信息?从目前为止所展示的情况来看,似乎并非如此每当您收到这个
hallData
时,如果您想在数据库中创建一个全新的Hall
实例,那么它必须是绝对的和完整的。Hibernate只知道您提供的信息,因此没有它,就无法建立这种关系如果
hallData
是部分的,并且您的目的是UPDATE
现有记录,那么您需要首先从数据库加载Hall
,将从映射器读取的更改合并到实例中,然后调用save
。这将有效地维护现有状态,并仅更改hallData
中提供的字段