Исключение во время сохранения в спящем режиме org.hibernate.TransientObjectException: - PullRequest
0 голосов
/ 11 марта 2011

Привет, у меня есть спящая карта имя класса = "com.example.Company" table = "user">

<many-to-one 
            class="com.example.Organization" fetch="join"
            name="consumer" lazy="false" not-null="false">
            <column name="ORGANIZATION_ID" />
        </many-to-one>
        <many-to-one 
            class="com.example.Organization" fetch="join"
            name="supplier" lazy="false">
            <column name="ORGANIZATION" not-null="false"/>
        </many-to-one>

Перед сохранением обновления моя база выглядит примерно так

фирменный стол

COMPANY   ORGANIZATION_ID ORGAIZATION
1             4            NULL

organization table

id   name
4     xxxx

Теперь моя проблема в том, когда я пытаюсь сделать saveorupdate org.hibernate.TransientObjectException: объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом: com.example.Organization.

Я использовал cascade = all, но каждый раз, когда я сохраняю обновление, он создает новую строку в организационной таблице, следовательно, я удалял cascade = all

когда я использовал casade = все работало, но он делал что-то вроде этого

company table
COMPANY   ORGANIZATION_ID ORGAIZATION
1             4            5

организационный стол

organizationid name
4               xxxx
5              nulll

создает ноль. Как я могу решить эту проблему .?

1 Ответ

1 голос
/ 13 марта 2011

Из вашего поста я понимаю, что вы пытаетесь добавить поставщика в существующую запись о компании.Итак, вы создаете новую запись организации, присоединяете ее к существующей записи компании и вызываете saveOrUpdate ().Итак, если вы не установите cascadeType = All, hibernate, конечно, будет жаловаться, поскольку вы еще не сохранили новую запись организации в базе данных.Когда вы используете cascadeType = All, hibernate сохраняет новую запись организации в базе данных, которая в вашем случае имеет идентификатор = 5, а затем обновляет существующую запись компании с этим идентификатором.Следовательно, hibernate работает правильно и делает все, что вы ПРОСИТЕ, чтобы сделать для вас.Возможно, вам следует рассказать о своей проблеме и указать, что именно вы хотите сделать, потому что все, что вы упомянули в своем посте, является ожидаемым поведением спящего режима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...