Справка по Hibernate Exception: TransientObjectException

Я получаю следующее исключение при попытке обновить объект:

org.hibernate.TransientObjectException: объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом: ......

Кто-нибудь может помочь ???

Объект, который я пытаюсь обновить, имеет "ленивый"; атрибут установлен в false в файле отображения. Похоже, что hibernate ожидает от меня сохранения дочерних объектов до того, как оно сбросит обновление ???

РЕДАКТИРОВАТЬ (ДОБАВЛЕНО):

<code><hibernate-mapping>
    <class name="utils.message.Message" table="messages">
        <id name="id" column="message_id">
            <generator class="native" />
        </id>
        <property name="message_text" column="message_text" />
        <property name="message_file" column="message_file" />
        <property name="is_active" column="is_active" type="boolean"/>
        <property name="is_global" column="is_global" type="boolean"/>
        <property name="start" column="start" type="java.util.Date"/>
        <property name="end" column="end" type="java.util.Date"/>
        <property name="last_updated" column="last_updated" type="java.util.Date"/>     

        <many-to-one name="last_updated_by" class="utils.user.User" column="last_updated_by" lazy="false"/>
        <many-to-one name="healthDepartment" class="utils.healthdepartment.HealthDepartment" column="health_department_id" lazy="false"/>

    </class>
</hibernate-mapping>
</code>
 skaffman25 июн. 2009 г., 19:46
Можете ли вы опубликовать соответствующие части вашего файла отображения или аннотации hibhernate?
 Rafael25 июн. 2009 г., 18:58
Кажется, использование каскадного свойства в файле сопоставления может решить мою проблему? просто не уверен, какой стиль мне подходит. (хотя я думаю, что использование только delete-orphan было бы то, что мне нужно). это может быть немного трудно понять документы гибернации с точки зрения новичка.

Ответы на вопрос(4)

когда вы сохраняете объект, который ссылается на другой объект, который является временным (что означает, что он имеет значение идентификатора «по умолчанию», часто равное нулю), а затем сбрасывает сеанс. Это обычно происходит, когда вы создаете целый граф новых объектов, но явно не сохранили их все. Есть два способа обойти это:

As you suggest, you could use cascading of saves to other associated objects. However, cascading wasn't really intended as a workaround for TOE but rather as a convenience for saving a group of related objects that are frequently manipulated together. If you detach your objects without its full set of associated data and then save it with cascading enabled, you could inadvertently delete data you don't want to lose. Ensure that all transient objects in your graph are explicitly saved as part of your unit of work. This is really just a case of understanding how your application will be creating an object graph and what entities are transient and which might be persistent or detached.

Я бы порекомендовал прочитать всю эту главу из документов Hibernate, чтобы полностью понять терминологию временных, постоянных и обособленных:

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html

 04 мар. 2012 г., 05:46
Приведенный выше URL не работает; вот новый @docs.jboss.org/hibernate/orm/3.3/reference/en/html/…
Решение Вопроса

запускать обновления из среды Hibernate.

 24 мар. 2017 г., 01:53
что это значит? Как это ответ?

чувак использовать собственность"cascade = true" in mapping. all will well... V-Boy

ировать операции сохранения, поскольку «один» концептуально это сущность, разделенная между многими другими. Этот тип отношений не является «дочерним объектом», как вы его выразили.

Вы можете переопределить это поведение, явно установив атрибут cascade в отношении, или вы можете вручную сохранить другой конец отношений «многие к одному».

 Rafael26 июн. 2009 г., 14:53
Skaffman, спасибо за разъяснения. Я только что прочитал документ, предложенный brd6644. Это помогло лучше понять некоторые фундаментальные концепции Hibernate. В конечном счете, мне нужна помощь в выяснении того, как можно обновить сообщение, не касаясь операции для пользователя / HD, связанного с сообщением.

Ваш ответ на вопрос