こんにちは、
これまでのところ、十分満足して Hibernate を使用しています。最近、アノテーションを使用して @CollectionOfElements を永続化できないようです。
次のように、RoomGroups のマップを含むクラス Estate のオブジェクトを保存しています。
@javax.persistence.MapKey(name = "code")
@Cascade(value = {CascadeType.DELETE_ORPHAN, CascadeType.SAVE_UPDATE})
@OneToMany(mappedBy = "estate")
@org.hibernate.annotations.OrderBy(clause = "code ASC")
private Map<String, RoomsGroup> roomGroups = new HashMap<String, RoomsGroup>();
RoomGroup は正しく保持されます。また、RoomGroup は MasterPrice とも関係があります。
@Cascade(value = {CascadeType.DELETE_ORPHAN, CascadeType.SAVE_UPDATE})
@OneToOne(mappedBy = "roomGroup", fetch = FetchType.EAGER)
private MasterPrice prices;
これまでのところ、MasterPrice 要素は正しく DB に格納されています。現在、MasterPrice 内には別のコレクションがあり、これは永続化されないようです。
@CollectionOfElements (fetch = FetchType.EAGER)
@JoinTable(
name = "roomgroups_masterprice_items",
joinColumns = {@JoinColumn(name = "fk_masterpricesID")})
@IndexColumn(name = "position")
private List<MasterPriceItem> dbprices = new ArrayList<MasterPriceItem>();
クラスMasterPriceItemは次のように定義されています
@Embeddable
public class MasterPriceItem implements Serializable{
MasterPriceItem で equal/hashCode メソッドも定義しましたが、休止状態がこれを永続化していないようです。例外は発生せず、ロードしようとすると常に NULL になります。
hibernate_3.3.1.ga を使用していますが、試してみることはできますか? クラス MasterPriceItem は、休止状態によって正しく分析されます [テーブルにないフィールドを配置すると、エラーが発生します]
どんな助けでも大歓迎です。どうも。