Я пытаюсь сохранить объект в базе данных postgres.
После вызова persist я возвращаю свой объект, я изменяю свой объект, исследую объект (с помощью функции find моего менеджера сущностей), и данные остаются такими же (до модификации моего объекта).
Я полагаю, что после сохранения объект является ссылкой на базу данных, а модификация с установщиком автоматически сохраняется в базе данных
Я использую JPA2.1 с hibernate, wildfly 13.
Я уже проверяю тезисы ответа:
В чем разница между persist () и merge () в JPA и Hibernate?
JPA EntityManager: зачем использовать persist () вместо merge ()?
У меня есть класс хранилища с менеджером сущностей:
@Transactional(TxType.SUPPORTS)
class testRepository{
@PersistenceContext(unitName = "xxxPU")
private EntityManager em;
[...]
@Transactional(TxType.REQUIRED)
public Test create(@NotNull Test test) {
em.persist(test);
return test;
}
public Test find(@NotNull Long id) {
return this.em.find(Test.class, id);
}
[...]
}
И мой тестовый класс с следующим тестом:
Test test = new Test(null, null, "12", "RUE DE LA PAIX", "75000", "PARIS", null);
test= testRepository.create(test);
Я считаю, что на данный момент объектный тест является ссылкой на базу данных, но если я позвоню по этому коду:
test.setAValue("93000");
И я ищу этот объект:
Test testFind = testRepository.find(test.getId());
И сравните два объекта, у меня ошибка теста, потому что test.aValue = 75000 и testFind.aValue = 93000.
После установки, если я сделал вызов функции слияния, testFind.aValue имеет правильное значение.
Я не понимаю, почему мой объект не является ссылкой на мою базу данных после постоянного вызова.