Здравствуйте!
Есть обект в базе, который содуржыт 150 полей. Тепер на вф странице юзер водин информацию в ети поля, и если были какието изменения, то нужно делать апдейт. Можно както ето реализовать красиво?
Просто есть идея сделать 150 дополнительных полей(property), и в них смотреть:
if (value != someField) {isChange = true;...;}
И если isChange = true, то в таком случае деалть апдейт.
Всегда делать апдейт не подходит, нужно сделать имено "ленивый" апдейт.
Здравствуйте! Есть обект в базе, который содуржыт 150 полей. Тепер на вф странице юзер водин информацию в ети поля, и если были какието изменения, то нужно делать апдейт. Можно както ето реализовать красиво? Просто есть идея сделать 150 дополнительных полей(property), и в них смотреть: if (value != someField) {isChange = true;...;} И если isChange = true, то в таком случае деалть апдейт. Всегда делать апдейт не подходит, нужно сделать имено "ленивый" апдейт.
Делай WorkFlow на отлавливание изменений в конкретных полях и в зависимости от этого обновляй что хочешь. Самый простой и быстрый метод.
[quote="talex"]Здравствуйте! Есть обект в базе, который содуржыт 150 полей. Тепер на вф странице юзер водин информацию в ети поля, и если были какието изменения, то нужно делать апдейт. Можно както ето реализовать красиво? Просто есть идея сделать 150 дополнительных полей(property), и в них смотреть: if (value != someField) {isChange = true;...;} И если isChange = true, то в таком случае деалть апдейт. Всегда делать апдейт не подходит, нужно сделать имено "ленивый" апдейт.[/quote] Делай WorkFlow на отлавливание изменений в конкретных полях и в зависимости от этого обновляй что хочешь. Самый простой и быстрый метод.
Точнее, есть страница редактирования обекта, на ней 150 полей, этого обекта, и если какое-то поле изменилось, то нужно сделать update етого обекта. На странице пока что просто стоят input'и с value="ourRecord.someField", где ourRecord обект с базы который нужно обновить, если были изменения.
Точнее, есть страница редактирования обекта, на ней 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 тить.
[quote="wilder"][quote="talex"]Здравствуйте! Есть обект в базе, который содуржыт 150 полей. Тепер на вф странице юзер водин информацию в ети поля, и если были какието изменения, то нужно делать апдейт. Можно както ето реализовать красиво? Просто есть идея сделать 150 дополнительных полей(property), и в них смотреть: if (value != someField) {isChange = true;...;} И если isChange = true, то в таком случае деалть апдейт. Всегда делать апдейт не подходит, нужно сделать имено "ленивый" апдейт.[/quote] Делай WorkFlow на отлавливание изменений в конкретных полях и в зависимости от этого обновляй что хочешь. Самый простой и быстрый метод.[/quote] Про WorkFlow даже не подумал что можно сделать :) . Если через код то тебе надо тогда два объекта один который в базе,другой ты например создаешь на страницы.И потом их сравниваешь через мета данные Пример: 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); } } Почти что готовый пример для тебя, :D я насколько помню тебе достаточно иметь ID объекта и значение тех филдов которые изменили что бы его за Update тить.
Sergey Prichepo, Спасибо огромное , ето то чно нужно.
Sergey Prichepo, Спасибо огромное :D , ето то чно нужно.