У меня есть следующий родительский объект, который отображается в таблицу в моей базе данных:
public Parent {
private Long id;
private String mid;
private Integer days;
private BigDecimal fee;
private DateTime createdDate = new DateTime();
private DateTime lastModifiedDate;
private Map<String, Child> children;
}
Со следующим .hbm.xml:
<hibernate-mapping default-access="field">
<class name="Parent" table="parent_table">
<id column="id" length="50" name="id" unsaved-value="null">
<generator class="increment"/>
</id>
<property length="50" name="mid"/>
<property name="days"/>
<property name="fee"/>
<property name="createdDate" type="(...)PersistentDateTime"/>
<property name="lastModifiedDate" type="(...)PersistentDateTime"/>
<map cascade="all-delete-orphan" inverse="true" name="children" >
<key column="parentId" />
<map-key column="country" type="string" />
<one-to-many class="Child" />
</map>
</class>
</hibernate-mapping>
Дочерний объект выглядит следующим образом:
public class Child implements Serializable {
private Long parentId;
private String country;
private String cu;
}
Со следующим .hbm.xml:
<hibernate-mapping default-access="field">
<class name="Child" table="child_table">
<composite-id>
<key-property name="parentId"/>
<key-property name="country"/>
<key-property name="cu"/>
</composite-id>
</class>
</hibernate-mapping>
После получения родительского объекта из моей базы данных через:
getSession().createCriteria(Parent.class)
.add(Restrictions.eq("mid", mid))
.uniqueResult();
После внесения некоторых изменений в Child.cu в дочернюю карту я вызываю saveOrUpdate для объекта Parent. После этого все выглядит нормально для сохранения / обновления, но после проверки child_table в БД эти изменения не были сохранены / обновлены.
Я полагаю, что это как-то связано с отображениями карты в классе Parent, но, похоже, не могу этого понять. Любая помощь будет оценена.
Заранее спасибо.