2010-08-22 3 views
0

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

Это использование Java EE 6 с Glassfish 3.0.1

+1

Пожалуйста, добавьте код вашего объекта и код, который вы используете для его сохранения. –

+0

На самом деле это код, созданный Netbeans. В этом случае у меня есть сервлет, вызывающий метод сеансового компонента, просто выполняющий 10 getEntityManager(). Persist (entity); Итак, когда я отлаживаю, всего несколько строк после того, как мой сервлет вызывает сессионный компонент, я вижу изменение идентификатора объекта и в БД. И часть, которую я думаю, было бы интересно в сущности: @Id @GeneratedValue (стратегия = GenerationType.IDENTITY) @Basic (опция = ложь) @column (имя = "member_id") частное Integer MemberID; –

+0

Невозможно ответить с текущим уровнем детализации. Просьба указать код, показать, в какой момент вы видите «разные» идентификаторы. –

ответ

1

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

Включить ведение журнала (на самом лучшем уровне) и включить журнал событий.

При использовании EclipseLink, чтобы включить ведение журнала см,

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

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

Попробуйте использовать последовательность TABLE, чтобы узнать, связано ли это с последовательностью IDENTITY.

Также укажите исходный код для класса.

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