JPA слияние с @Column (updatable = false, вставляемый = false) не возвращает фактическое значение столбца - PullRequest
0 голосов
/ 27 сентября 2018

Проще говоря, у меня есть столбец в базе данных, который настроен так:

create table if not exists thing(
    id bigint primary key,
    ...,
    test int default 5
);

И такой объект:

@Entity
public class Thing {

    private long id;
    ...
    private int test;
    ...

    @Id public long getId() { return id; }
    public void setId(long id) { this.id = id; }

    public void setTest(int test) { this.test = test; }

    @Column(updatable = false, insertable = false)
    public int getTest() {
        return test;
    }

Когда я объединяю новый объект, напримерчто:

Thing thing = new Thing ();
thing.setId(123);
Thing managed = em.merge(thing);

managed не синхронизирует поле test с базой данных.Это покажет 0.Как я могу заставить все JPA обновить то, что по сути является неизменным полем, установленным БД?

Цель этого - создать поле даты создания.Но также и другие сценарии, такие как поля БД, которые устанавливаются триггерами ...

1 Ответ

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

Как упоминал Билли Фрост - вам нужно обновить сущность из базы данных.

Но перед вызовом обновления вы должны заставить Hibernate выполнить операторы SQL.

Thing thing = new Thing ();
thing.setId(123);
Thing managed = em.merge(thing);

em.flush(); // executes SQL statements
em.refresh(managed ); // gets the managed thing from the database
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...