2012-03-28 2 views
0

Мне интересно, как я могу обновить столбец в таблице с помощью EclipseLink. Я пробовал использовать EntityManager.merge(myObject);, но затем EclipseLink выбрасывал некоторые исключения, говоря, что он не обновляет другие столбцы нулевым значением. Я попытался добавить свойство в мой класс, который я хочу обновить, поэтому он просто обновляет измененный столбец, но он не работал, и я даже не знаю, правильно ли это сделать.Как обновить столбец в таблице в MySQL с помощью EclipseLink?

Так как я могу обновить только один столбец в таблице, используя EclipseLink?

ответ

1

Если ваше слияние не работает, это, скорее всего, потому, что вы создаете новый экземпляр с нуля и только пытаетесь заполнить значение, которое хотите изменить. Это приводит к слиянию, перезаписывающему все остальные поля с нулевым значением. Не используйте em.merge для неполных объектов, так как он объединяет каждое управляемое поле JPA - он не имеет возможности узнать, что вы намеревались, и должен объединить все состояние объекта.

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

em.getTransaction().begin(); 
YourEntity instance = em.find(YourEntity.class, id); 
instance.setYourAttribute(newValue); 
em.getTransaction().commit(); 

Или отдельный экземпляр, считываемый с EM, который позднее вы используете em.merge.

+0

Спасибо! Это сработало! Как насчет @ChangeTracking? Что это и когда его использовать? – Rox

Смежные вопросы