2013-07-17 2 views
1

Я использую 2 фреймворка для получения и сохранения моих данных (MyBatis для извлечения и спящего режима для сохранения/обновления/удаления). То, что я хочу, чтобы получить какой-то объект с mybatis и назначить его на новое юридическое лицо и сохранить его в спящий режимКак сохранить объект с помощью MyBatis + Hibernate

Пример:

Я получаю список «Роль» через запрос mybatis. Тогда я пытаюсь создать новый объект, который есть, что отображение:

@ManyToOne(fetch = FetchType.LAZY, optional = false) 
    @JoinColumn(name = "id_role") 
    private Role role; 

Я просто делаю setRole с одной роли из списка. Затем я вызываю saveOrUpdate из спящего режима. Я получаю это исключение:

объекта ссылается на несохраненный переходный экземпляре - сохранить переходный экземпляр перед промывкой

Я понимаю исключение, но есть решение?

Большое спасибо за помощь.

+0

Это очень необычное архитектурное решение: использование двух структур персистентности для одних и тех же объектов. Можете ли вы рассказать о том, как вы пришли к этому решению? Кроме того, у вас есть MyBatis и Hibernate идут против одной и той же транзакции, одного и того же соединения, той же базы данных? – Olaf

+0

Я знаю, что это необычное архитектурное решение, но у mybatis есть преимущество, которое не имеет для hibernate для получения материала и того же самого для вещей с сохранением в спящем режиме. обе структуры не используют одну и ту же транзакцию, а не одно и то же соединение, но одну и ту же базу данных. – user2591626

ответ

0

Способ загрузки ролей (через MyBatis), Hibernate не знает, что роли уже находятся в базе данных. Таким образом, исключение, которое вы видите. Единственный способ обойти это - сохранить roleId в своей сущности вместо объекта Role. Кроме того, вам придется загружать роли через Hibernate вместе с сущностями, которые их используют.

+0

Есть ли способ сообщить hibernate о сохранении сущности и просто обновить сопоставление между ролью и другой, не пытаясь сохранить объект Role. – user2591626

+0

@ user2591626: Не то, чтобы я знал. – Olaf

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