我不想更新cayenne中的某些列值,但我想插入它们。插入行后,我永远不会想要更新某些列值。我怎么能在卡宴做到这一点。如果它在映射文件中是休眠的,我们可以指定一些东西
<column name="column1" type="string" insert="true" update="false">
如何在cayenne映射文件中指定上面的一个。对此的任何帮助都非常感谢。
-Narendra
答案 0 :(得分:2)
在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