![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Rusico |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Привет. Есть у меня программулька на RMI.
Создаю два класса отношение между которыми ManyToOne:
Создаются все таблицы, и вроде всё ок, только когда я добавляю в Contract Company и пытаюсь сохранить, то получаю исключение:
Шо делать-то? я так понимаю, что он пытается обратиться к полю id не через getId(), а на прямую, и не может, так как получает он не CompanyImpl, а Company обёрнутый в Proxy |
||||
|
|||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Посмотрите пункт 2.2.1 документации к Hibernate Annotations. Там сказано, что если @Id стоит у поля, то используется прямой доступ к полю. А если @Id стоит у метода getId(), то для доступа будет использоваться метод.
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Rusico |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Спасибо.
Переделал вот так:
но проблема к сожалению осталась Добавлено через 1 минуту и 52 секунды однако Exception изменился
|
||||
|
|||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
У меня есть смутное подозрение, что аннотировать нужно интерфейс, а не имплементирующий его класс.
Я подозреваю, что этот интерфейс MainObject. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Rusico |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Тогда при сохранении session.saveOrUpdate(this) ругается:
даже пробовал делать так:
тоже самое. К тому, когда я стал писать аннотации в интерфейсах, то мне пришлось в каждом из них определять @Id, так как Hibernate ругался. |
||||
|
|||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
|
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
согласен
|
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Честно говоря, у меня идеи кончились. Мне такая задача впервые попадается: сохранять через Hibernate удалённые объекты...
Может быть если у меня будет время, я попробую сам что-то подобное сделать и поиграться с ним, но не обещаю. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Я подозреваю что сохранить переданный по RMI объект, созданный Hibernate вообще невозможно. По многим причинам. В частности, для реализации интерсепторов Hibernate использует CGLIB, который генерит байт-код на лету. Кроме того, думаю что есть сложности с сериализацией сессии Hibernate, которая там же в объекте может храниться, объекта транзакции и т.п. Поступайте так - перед передачей объекта по сети, копируйте его в обычный бин, при приеме из сети наоборот из бина в объект Hibernate.
|
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Если чесно, то не понял, что значит копировать в обычный бин? |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Я так подозреваю, что tux говорил о простом копировании полей с помощью сетеров/гетеров. То есть у вас будет два класса с одинаковыми полями - тот что перередаете и локальный. -------------------- Lost.... |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Но ведь в JBoss всё и так работает?
|
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Что "всё" и как "так" работает в JBoss? -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |