WedX - журнал о программировании и компьютерных науках

JPA сохраняет одну и ту же сущность дважды

Я только что заметил, что часть кода, над которой я работал, дважды сохраняет одну и ту же сущность. Я пробовал несколько уловок, например flush () и Transaction REQUIRES_NEW, но ничего не помогло. Но во время отладки я вижу, что после вызова persist (entity) я получаю идентификатор (IDENTITY) для этого объекта ... но чуть позже в коде, если я посмотрю на переменные, я увижу тот же объект с другой идентификатор и две группы с этими идентификаторами в таблице.

Это использует Java EE 6 с Glassfish 3.0.1


  • Добавьте код своей сущности и код, который вы используете для ее сохранения. 23.08.2010
  • Фактически он использует код, созданный Netbeans. В этом случае у меня есть сервлет, вызывающий метод сессионного компонента, просто выполняющий getEntityManager (). Persist (entity); Поэтому, когда я отлаживаю, всего через несколько строк после того, как мой сервлет вызывает сессионный компонент, я вижу изменение идентификатора объекта, а также в базе данных. И часть, которая, я думаю, будет интересна в сущности: @Id @GeneratedValue (strategy = GenerationType.IDENTITY) @Basic (optional = false) @Column (name = MEMBER_ID) private Integer memberId; 23.08.2010
  • Невозможно ответить с текущим уровнем подробностей. Пожалуйста, укажите код, покажите, в какой момент вы видите разные идентификаторы. 23.08.2010
  • Я могу видеть это в любом другом месте сервлета после вызова компонента сеанса. И один и тот же объект дважды помещается в базу данных, поэтому нет сомнений, что JPA помещает его дважды в БД, хотя отладка показывает мне, что я вызываю только один раз. 23.08.2010

Ответы:


1

Какого провайдера JPA вы используете? а какая версия?

Включите ведение журнала (в лучшем случае) и включите журнал того, что происходит.

Если для включения ведения журнала используется EclipseLink, см.

https://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging

Какое значение присвоено идентификатору вашего объекта, убедитесь, что оно> 0. Также убедитесь, что ваша таблица в базе данных была сгенерирована со столбцом IDENTITY. Какую базу данных вы используете?

Попробуйте использовать ТАБЛИЧНОЕ секвенирование, чтобы увидеть, связано ли это с секвенированием IDENTITY.

Также включите исходный код вашего класса.

23.08.2010
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]