Будет ли entitymanager.merge () работать с клонированным объектом - PullRequest
0 голосов
/ 05 февраля 2020

Это базовый c вопрос, но я не смог найти много информации по этому вопросу.

Вариант использования следующий: я выполнил поиск с помощью CriteriaQuery, чтобы найти x записей. Последний вызов, который я выполняю в этом методе для запуска фактического поиска, следующий:

getEntityManager().createQuery(query).setMaxResults(MAX_ROWS).getResultList())

Таким образом, это означает, что записи, которые я получаю, присоединены к entityManager.

Представьте, что я бы глубоко клонируйте эти объекты, измените некоторые значения в этих клонированных объектах и ​​попробуйте вызвать entityManager.merge (clonedEntity). Будет ли это работать? Проверяет ли метод «слияние» метод «равно» в вашей сущности, чтобы найти похожие объекты в базе данных и обновлять их, или это не сработает, и вам нужно изменить сущности, связанные с менеджером сущностей, чтобы иметь возможность обновлять эти записи в базе данных?

Заранее спасибо за помощь

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете обновить объекты, которые управляются менеджером сущностей, тогда вам не нужно объединять. Клонированная сущность отсоединена, поэтому вам необходимо сохранить ее (если у нее нет идентификатора), и она будет представлять новый объект, следовательно, новую запись в базе данных.

Если у него есть идентификатор, вы можете объединить его. Это зависит от того, используете ли вы сгенерированный идентификатор, и если клонирование также копирует идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...