有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    这个问题似乎与hibernate无关,而是如何从这个mapper填充Hall对象的结果,我假设它可能是某种类型的JSON库

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

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

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