Метод критериев Session.createCriteria (класс таблицы namw), извлекающий повторяющиеся строки

Вы должны пропустить. Для вашего конкретного случая:

db.person.find().snapshot().forEach(
    function (elem) {
        db.person.update(
            {
                _id: elem._id
            },
            {
                $set: {
                    name: elem.firstname + ' ' + elem.lastname
                }
            }
        );
    }
);
0
задан marc_s 18 January 2019 в 17:12
поделиться

1 ответ

У вас есть недостаток дизайна в вашем столе или картировании.

Ваше отображение говорит, {LINKID, FROMHIERARCHY, FROMNODE} является первичным ключом (PK) сущности HLink. Но, напротив, ваша схема позволяет вставлять несколько записей, имеющих одинаковую комбинацию {LINKID, FROMHIERARCHY, FROMNODE}, что подтверждается вашим необработанным ответом на запрос SQL. Вы должны определить уникальный индекс или первичный ключ для {LINKID, FROMHIERARCHY, FROMNODE}.

В качестве альтернативы вы не должны лгать Hibernate, говоря ей, что это был первичный ключ - это просто не так.

Почему объекты дублируются?

Когда Hibernte читает ответ на запрос SQL, для каждой строки с различными значениями PK он создает новый объект-объект HLink. Hibernate читает 130 1 3743 30 8 и создает экземпляр для недавно обнаруженной PK PK {130, 1, 3743}, помещая этот экземпляр сущности в кэш сеанса l1. Для обеих дополнительных записей Hibernate распознает: «О, у меня уже есть эта сущность с PK {130, 1, 3743} в кеше, поэтому мне не нужно проверять полную запись результата, а просто снова добавить кэшированный экземпляр в список результатов запроса». [1112 ]

Редактировать:

Чтобы решить эту проблему, вы можете добавить PK в структуру таблицы и отобразить его как @Id, либо найти уникальную комбинацию столбцов и отобразить ее как составной идентификатор как Вы уже сделали с не уникальной комбинацией столбцов. Hibernate, кажется, не работает без Id, поскольку ответ на этот вопрос гласит .

0
ответ дан Selaron 18 January 2019 в 17:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: