Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка Hibernate клонирование записи / 7 сообщений из 7, страница 1 из 1
26.12.2016, 01:04
    #39374950
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
Всем доброго времени суток.

Ситаация такая - имеется запись которую требуется клонировать а другую старую запись отцепить от референса (связь 1 ко многим запись дочерняя) и удалить а клонированную прицепить к по новой.

Вот код проедуры клонирования.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public ContactAddress clone(){
        ContactAddress clone = new ContactAddress();
        try {
            Address a = new Address();
            PropertyUtils.copyProperties(clone, this);
            PropertyUtils.copyProperties(a, address);           
            clone.setAddress(a);           
        } catch (Exception e) {
            log.error("Error creating clone", e);
        }
        return clone;
    }




Проблема в том что когда я выполняю код (написан не мной - но менять его видимо мне) то запись появляется с аналогичным id.

Если id давлю через setId(null) то в итоге в БД появляются 2 записи-клона вместо 1, если id не давлю то не повляется либо ни 1 (ошибки не генерится) либо 1 но сильно позже.

В итоге не получается в материнской записи перецепить дочернюю и удалить прошлую дочернею (это не оригинал клон а совершенно другая запись). Ошибка при удалении прошлой дочерней - ругается foreign key т е не удается даже отцепить старую запись от материнской. В чем ошибка и вообще можно ли при работе с hibernate использовать copyProperties?
Или только руками новую запись-клон создавать? (не красиво и не удобно)

Код: java
1.
2.
3.
String[] ignoreProperties = new String[]{"id"};
             PropertyUtils.copyProperties(clone, this, ignoreProperties);
            


Такое решение почему то не проходит видимо данный вариант этого метода устарел хотя в инете рекомендуют. Но такой вызов эклипс не принимает - говорит что параметр ignoreProperties лишний.

Ява версии 8, ос видна 10. Эклипс неон.
...
Рейтинг: 0 / 0
26.12.2016, 06:31
    #39374978
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
зубок александр,
куча слов и ни одного о том что есть понимание базы, вот что хибер делает.
выглядит как бред.
это не для того что обидеть, просто это пример влияния прослойки на сознание.....
...
Рейтинг: 0 / 0
26.12.2016, 11:11
    #39375118
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
зубок александр,
по хорошему, нужно назначить новый id к адресу даже для клонированной.
Не нужно отцелять и прицеплять.
Пользователям этот Id не виден. А у БД он должен меняться хотя бы для логирования и последующих разборок.
Ты счас пытаешься присвоить паспорт умершего к вновь родившемуся.
...
Рейтинг: 0 / 0
27.12.2016, 00:06
    #39375711
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
Petro123,

авторпо хорошему, нужно назначить новый id к адресу даже для клонированной.
А разве так делать есть хорошо?
И кстати откуда мне его взять - id генерится автоматом и как то делать эту операцию не через БД а с клиента не хочется в принципе.
Подавлять id при помощи setId(null) приводило к дублированию.
...
Рейтинг: 0 / 0
27.12.2016, 02:36
    #39375727
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
зубок александр,
а что такое клонирование—?
в терминах баз такого понятия нет.
...
Рейтинг: 0 / 0
27.12.2016, 08:40
    #39375780
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
зубок александр,
Конкретнее код и чего боимся?
Сам сказал, что подавляешь)))).
...
Рейтинг: 0 / 0
28.12.2016, 00:30
    #39376462
зубок александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка Hibernate клонирование записи
Petro123,

Спасибо всем!
Все решено - именно сет нулл и надо было делать. Заработало
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка Hibernate клонирование записи / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]