Возникает ошибка при использовании метода deepCopy для копировании сущности

Добрый день!
Я столкнулся со следующей проблемой: в моем интерфейсе есть кнопка “Копировать”, реализована она у меня следующим образом:

    public void execute() {
        BaseUuidEntity entity = (BaseUuidEntity) metadata.getTools().deepCopy(target.getSingleSelected());
        entity.setId(UUID.randomUUID());
        screenBuilders.editor(target)
                .newEntity(entity)
                .build()
                .show();
    }

Как можете заметить, для копирования сущности я использую метод deepCopy(), но он у меня не всегда работает правильно. Например, у меня есть две записи: Основной и Виртуальный склад. И при копировании Основного склада возникает ошибка на уровне БД: ОШИБКА: значение NULL в столбце “key_” отношения “am_location” нарушает ограничение NOT NULL. Я продебажил и кажется понимаю в чем проблема: у атрибута refLocation в графе key присваивается значение null. А в таблице Location у меня на KEY стоит ограничение not null. И видимо поэтому копируемая сущность не сохраняется.
image
Я попробовал вместо метода deepCopy() использовать метод copy(), но начал получать IllegalStateException с unfetched атрибутами. Видимо мне метод copy() не подходит, т.к. у многих сущностей у меня есть вложенные коллекции и все-таки больше подходит метод deepCopy, но и он не работает так, как нужно.

Я так понимаю, мне нужна собственная реализация метода копирования?

Вы пробовали разобраться, почему атрибут key не копируется? Поставить точку останова внутри deepCopy(). У нас open-source не просто так.