Как сказать Hibernate, чтобы не обновлять определенные столбцы - PullRequest
4 голосов
/ 11 ноября 2011

У меня есть приложение, которое даст пользователю возможность обновлять определенные значения.Я хочу отправить только информацию об этих столбцах пользователю и получать обновления.

Я хочу сохранить спящий объект, созданный из того, что они мне отправляют, но не обновлять столбцы, которые пользователь не делаетиметь доступ к.Аналогичным образом, если они запрашивают новую запись, я хочу использовать данные, которые они мне отправляют, и устанавливать для неперечисленных столбцов значения по умолчанию для баз данных.

Существует ли простой способ или наилучшая практика для использования?

Должен ли я создать второе сопоставление с таблицей, которое просто не упоминает эти столбцы?

Ответы [ 4 ]

6 голосов
/ 12 ноября 2011

Я думаю, что я отмечу свойство update = "false" в файле отображения. Я бы хотел услышать, есть ли способ сделать это постоянно, поэтому, если я напишу что-то еще, что должно изменить эти поля, он мог бы это сделать.

1 голос
/ 07 декабря 2014

Используйте updatable = false в Hibernate, чтобы избежать обновления столбца.

Например:

@Column(name=CRE_TS, updatable=false)
private Date getCreTs(){
   return this.creTs;
} 
1 голос
/ 11 ноября 2011

Если вы не хотите, чтобы эти столбцы обновлялись, просто не вызывайте установщики этих столбцов?Если установщик столбца не вызывается (или вызывается с новым значением), столбец не будет обновлен.

Сначала необходимо получить запись с помощью спящего режима, а затем вызвать установщики для соответствующегостолбцы, а затем сохранить его.Таким образом, данные, которые вы не хотите изменять, не изменятся.

0 голосов
/ 08 сентября 2018

Мое требование: я не хочу обновлять столбец в method1(), но он должен быть обновлен в method2(), поэтому на уровне конфигурации здесь работать не будет.

Решение состоит в том, чтобыCloneable POJO и метод переопределения clone().

public class User implements Cloneable {
//properties
@Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

получить объект из сеанса

User user = <from Session suppose>.
User clone  = null;
try {
    clone = (User) user .clone();    // clone the real object
} catch (CloneNotSupportedException e) {
    //log your Exception here
}
clone.setUserName("Avinash");
    transaction.commit();
}
session.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...