私は MongoDB で永続化を行うために Kundera を使用しています。私のモデルには、一連の変数を持つエンティティ クラスがあり、これらのいくつかは別のエンティティ クラスのリストなどです。たとえば、エンティティ クラス Record のリストを持つ RecordVersion という名前のエンティティ クラスは、エンティティ クラス AuxiliarData のリストを持ちます。次のようなもの: RecordVersion > Record > AuxiliarData > References
@Entity
@Table(name = "recordVersion", schema = "TestDB@records")
public class RecordVersion {
@Id
@Column(name="idRecordVersion")
private String idRecordVersion;
//others variables..
@OneToMany (cascade={CascadeType.ALL}, fetch=FetchType.EAGER")
@JoinColumn(name="idRecordVersion")
private List<Record> record = Lists.newArrayList();
記録用
@Entity
@Table(name = "Record", schema = "TestDB@records")
public class Record {
@Id
@Column(name="idRecord")
private String idRecord;
//others variables..
@OneToMany (cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
@JoinColumn(name="idRecord")
private List<AuxiliarData> auxiliarData = Lists.newArrayList();
AuxiliarData の場合
@Entity
@Table(name = "AuxiliarData", schema = "TestDB@records")
public class AuxiliarData {
@Id
@Column(name="idAuxiliarData")
private String idAuxiliarData;
//others variables..
@OneToMany (cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
@JoinColumn(name="idAuxiliarData")
private List<References> references = Lists.newArrayList();
Referenceまですべてのネストを使用して、RecordVersionの完全なデータであるmongoDBに永続化できますが、Mongoのコレクション内の特定のRecordVersionに対して、たとえばレコードを追加した後、RecordVersionのそのレコードを更新することはできません.
em.merge(someRecordVersion) で試しましたが、うまくいきませんでした。