Здравствуйте!
Есть обект в базе, который содуржыт 150 полей. Тепер на вф странице юзер водин информацию в ети поля, и если были какието изменения, то нужно делать апдейт. Можно както ето реализовать красиво?
Просто есть идея сделать 150 дополнительных полей(property), и в них смотреть:
if (value != someField) {isChange = true;...;}
И если isChange = true, то в таком случае деалть апдейт.
Всегда делать апдейт не подходит, нужно сделать имено "ленивый" апдейт.
Делай WorkFlow на отлавливание изменений в конкретных полях и в зависимости от этого обновляй что хочешь. Самый простой и быстрый метод.
Точнее, есть страница редактирования обекта, на ней 150 полей, этого обекта, и если какое-то поле изменилось, то нужно сделать update етого обекта. На странице пока что просто стоят input'и с value="ourRecord.someField", где ourRecord обект с базы который нужно обновить, если были изменения.
Пример:
fieldMap = Schema.SObjectType.someSobject.fields.getMap();
update someRecords(sobject source ,sobject target){
for (string key : fieldMap.keySet()) {
Schema.SObjectField f = fieldMap.get(key);
Boolean access = f.getDescribe().isAccessible();
if ((access) && (key != 'ownerId')) {
Object valueSource = source.get(key);
Object valueTarget = target.get(key);
if ((valueSource != valueTarget) && (valueSource != null)) {
if (((valueTarget == false) || (valueTarget == true))) {
target.put(key, valueTarget);
} else {
target.put(key, valueSource);
}
}
Почти что готовый пример для тебя,
я насколько помню тебе достаточно иметь ID объекта и значение тех филдов которые изменили что бы его за Update тить.
Sergey Prichepo, Спасибо огромное
, ето то чно нужно.