версии: 3.6.0.finalHibernate не вставить повторно прилагается коллекция? (Ошибка?)
У меня следующая ситуация: Субъект с коллекцией, содержащий объекты типа значения, с каскадированием полностью включены.
1) Я удаляю, собираю и храните его в отделении. Затем загрузите его, чтобы убедиться, что коллекция действительно удалена. 2) Затем я добавляю удаленную коллекцию и сохраняю объект снова. Затем я загружаю его снова, чтобы проверить результат и заметить, что коллекция пуста, а это не должно: (... Что я делаю неправильно или это ошибка? Когда я использую чистую созданную коллекцию в 2) , который не существует объектов Hibernate, он отлично работает .., то есть: коллекция правильно хранится в db.
В коде, мое отображение:
<class name="com.sample.Declaration" table="decl">
<id name="id" column="id" type="string" length="40" access="property">
<generator class="assigned" />
</id>
<set name="statusHistory" table="decl_sts_hist" lazy="false" cascade="all">
<cache usage="read-write" />
<key column="idDec" not-null="true" />
<composite-element class="com.sample.DeclarationStatusDefault">
<property name="remark" column="remark" type="string" length="254" />
<property name="statusName" column="stsName" type="declarationStatusName" not-null="true" update="false" />
</composite-element>
</set>
</class>
Код:
// 1): clear the status history
Declaration dec = Persister.findDeclarationById("id");
SortedSet<DeclarationStatus> history = dec.getStatusHistory();
dec.setStatusHistory(null);
dec.saveOrUpdate(); // will call saveOrUpdate on the current session.
Declaration dec = Persister.findDeclarationById("id");
assertNull(dec.getStatusHistory()); // OK
// 2) recover the status history
dec.setStatusHistory(history);
dec.saveOrUpdate(); // will call saveOrUpdate on the current session.
Declaration dec = Persister.findDeclarationById("id");
assertNotNull(dec.getStatusHistory()); // ERROR, is empty like before
Если я создаю новый набор с несколькими записями и хранить его, все работает отлично, но когда я храню старая история, содержащая объекты Hibernate, такие как PersistSet, не будет храниться в db ... Stranggeee .... Является ли это ожидаемым поведением? ... Я больше пахну, как ошибка, или что-то здесь отсутствует. ..
Если я отладка коды гибернации, запись коллекции никогда не помечается как дополненный/воссоздано в методе Collections.prepareCollectionForUpdate(), так как loadedPersister и currentPersister одинаково по какой-то причине ...
Кто-нибудь какие-либо идеи?
Да, это должно быть assetNotTrue, спасибо .... Ваше утверждение, однако, неверно, попробуйте. Ясно, что действительно необходимо соотношение между родительским ребенком, в котором ребенок также является сущностью, но не тогда, когда ребенок также является сущностью, как и его родитель.В этом случае Hibernate имеет полный контроль и способен сигнализировать об изменениях. Испытай сам, и ты это увидишь. благодаря – edbras