-1

在休眠中使用 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 调用来做到这一点?

4

1 回答 1

1

如果您尝试检查您尝试提交的数据是否存在,那么您可以相应地设置标志。因此,您可以执行以下操作:

  1. 如果您有任何自动生成的列并且它是由您手动设置的,那么对于新数据,它将在 bean 中为空。
  2. 如果您拥有由 DB 使用某些序列生成器设置的自动生成的密钥,那么该字段也将为空。
  3. 如果数据库中存在数据,那么您将首先从数据库中提取数据,然后在将其保存到数据库之前对其进行更新。
  4. 如果您没有自动生成的密钥,那么第 3 步也可以提供帮助。

所以 ablve 应该可以帮助您确定状态是 NEW 还是 MODIFIED。这实际上就像在提交之前手动标记数据。

希望这可以帮助。

于 2013-06-10T07:54:50.030 回答