1

こんにちは、

これまでのところ、十分満足して 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 は、休止状態によって正しく分析されます [テーブルにないフィールドを配置すると、エラーが発生します]

どんな助けでも大歓迎です。どうも。

4

0 に答える 0