Hibernate有条件地为saveOrUpdate设置一个对象

时间:2013-06-10 07:46:03

标签: java hibernate

在休眠状态下使用saveOrUpdate方法时,是否可以有条件地设置一个值?我的方案是我需要在插入行时将状态设置为NEW,或者在更新时将其设置为MODIFIED。我试图使用saveOrUpdate方法并完成此操作。因此可以用这种方式设置状态吗?

抱歉,我之前没有发布过代码..

下面的

是代码段

SessionFactory sessionfactory1 = HibernateUtil.getSessionFactory1();
    Session session = sessionfactory1.openSession();
    Transaction transaction1 = session.beginTransaction();
    SearchFileMasterDO oSearchFileMasterDO = new SearchFileMasterDO();
    oSearchFileMasterDO.setId("some unique name");//identifier
    oSearchFileMasterDO.setText("some value");
    oSearchFileMasterDO.setStatus("NEW"); //if an update happens it needs to be set as "MODIFIED"
    session.saveOrUpdate(oSearchFileMasterDO);
    transaction1.commit();
    session.close();

基本上我需要知道是否有办法根据场景更改状态。可以直接使用saveOrUpdate调用吗?

1 个答案:

答案 0 :(得分:1)

如果您尝试检查是否存在要提交的数据,则可以相应地设置标记。所以你可以这样做:

  1. 如果您有任何自动生成的列并且由您手动设置,那么它将在bean中为新数据为空。
  2. 如果您使用某个序列生成器使用DB设置的自动生成密钥,那么该字段也将为空。
  3. 如果数据存在于数据库中,那么您将首先从数据库中提取数据,然后在将数据保存到数据库之前对其进行更新。
  4. 如果您没有自动生成的密钥,步骤3也可以在这种情况下提供帮助。
  5. 因此,ablve应该可以帮助您确定状态是NEW还是MODIFIED。这实际上就像在提交之前手动标记数据一样。

    希望这有帮助。