【问题标题】:Preventing Cayenne from upading some column values防止 Cayenne 更新某些列值
【发布时间】:2012-11-19 10:52:58
【问题描述】:

我不想更新 cayenne 中的某些列值,但我想插入它们。插入行后,我将永远不想更新某些列值。我怎么能在卡宴中做到这一点。如果它在映射文件中是休眠的,我们可以指定一些东西

<column name="column1" type="string" insert="true" update="false">

如何在 cayenne 映射文件中指定以上一项。非常感谢您对此的任何帮助。

-纳伦德拉

【问题讨论】:

    标签: java database hibernate orm apache-cayenne


    【解决方案1】:

    在 Cayenne 中,您不能以声明的方式执行此操作(而且我认为添加这不是一个非常有用的抽象)。但是你当然可以用一点代码来实现同样的目标。覆盖对象 [1] 中的 'validateForUpdate' 以检查给定列在当前事务中是否未更改:

      public void validateForUpdate(ValidationResult validationResult) {
         super.validateForUpdate(validationResult);
    
         ObjectStore objectStore = (ObjectStore) getObjectContext().getGraphManager();
         DataRow snapshot = objectStore.getCachedSnapshot(getObjectId());
         if(!snapshot.get("COLUMNNAME").equals(getMyProperty())) {
            validationResult.addFailure(new SimpleValidationFailure(this, "Immutable property modified");
         }
      }
    

    [1]http://cayenne.apache.org/docs/3.1/api/org/apache/cayenne/Validating.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      相关资源
      最近更新 更多