Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止Cayenne升级某些列值_Java_Database_Hibernate_Orm_Apache Cayenne - Fatal编程技术网

Java 防止Cayenne升级某些列值

Java 防止Cayenne升级某些列值,java,database,hibernate,orm,apache-cayenne,Java,Database,Hibernate,Orm,Apache Cayenne,我不想更新cayenne中的某些列值,但我想插入它们。插入行后,我将永远不想更新某些列值。在cayenne中,我如何才能做到这一点。如果在映射文件中是hibernate,我们可以指定一些内容 <column name="column1" type="string" insert="true" update="false"> 如何在cayenne映射文件中指定上面的一项。非常感谢您在这方面的帮助 -在Cayenne中,Narendra不能以声明的方式进行(我觉得这不是一个非常有用

我不想更新cayenne中的某些列值,但我想插入它们。插入行后,我将永远不想更新某些列值。在cayenne中,我如何才能做到这一点。如果在映射文件中是hibernate,我们可以指定一些内容

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

如何在cayenne映射文件中指定上面的一项。非常感谢您在这方面的帮助


-在Cayenne中,Narendra不能以声明的方式进行(我觉得这不是一个非常有用的抽象添加)。但是,只需一点代码就可以实现同样的效果。重写对象[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]