Hibernate:在数据库中将数据集缺少的参数插入null

时间:2016-06-24 12:21:57

标签: java hibernate hql

当我尝试插入我的一个对象时,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"缺少所以hibernates将我的Users_Usines表设置为空。

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

如何解决?谢谢!

1 个答案:

答案 0 :(得分:1)

问题似乎与hibernate无关,而是你如何从Hall填充mapper对象的产品,我认为这可能是某种类型的JSON库。

您是否已确认hallData包含在hibernate插入数据时在数据库级别形成该关系所需的所有相关信息?这似乎不是迄今为止所显示的内容。

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

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