2012-05-10 2 views
0

кодаиз сохраняемого объекта загружается первым после перезапуска

список классов {
@OneToMany (targetEntity = ShoppingItemStatus.class, каскада = CascadeType.ALL, выборка = FetchType.LAZY)
private List items = new ArrayList();

}

Здравствуйте,

Я работаю с Eclipse, Link и Glassfish и я получили весьма досадную ошибку.

  1. Я сохраняющийся объект
  2. Я зачитав список объектов (новый объект включен)
  3. В «позиции» он новый объект не содержит какие-либо элементы

Затем я перезапускаю сервер:

Все элементы содержатся правильно. Я не могу понять эту ошибку, потому что на шаге 2. Существуют данные в таблице между ShoppingItemStatus и списком.

Я ищу два дня, меняя каждый Конфигурация & Аннотация в моих сущностях.

Я в затруднении Заранее благодарю вас за помощь!

+0

Показать ... ваш ... код ... –

ответ

0

Я предполагаю, что вы не обновляете обе стороны отношений. Поскольку вы никогда не добавляете OneToMany, он остается пустым, когда вы его перечитываете. Вы должны поддерживать обе стороны отношений.

See, http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption.2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side

По умолчанию EclipseLink позволяет общий кэш. Вы, когда перечитываете объект, который исходит из кеша, и все еще имеете состояние, в котором вы сохранялись.

У вас возникла бы эта проблема в одном диспетчере/транзакции одного объекта, даже без общего кеша.

Вы всегда можете отключить общий кэш, чтобы избежать проблемы, но вам все равно нужно исправить свой код.

+0

Хорошо, спасибо. Простая em.clear() убила все дни работы. http://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F Я пробовал это, но все еще есть эта проблема, вы говорили о fixxing моего кода. Что вы подразумеваете под этим? Благодаря! – user1385980

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