私は mongodb を使用して json ドキュメントを保存しています。また、リレーショナル モデルに Hibernate ORM を使用しているため、mongo モデルには OGM を使用することにしました。
現在、私の OGM エンティティはすべて同じ親クラスを共有しています。次のようになります。
@Entity
public abstract class Document {
private static final Gson GSON = new Gson();
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Type(type = "objectid")
protected String id;
public String id() {
return this.id;
}
@Override
public String toString() {
return Document.GSON.toJson(this);
}
}
@Entity
public class Address extends Document {
private String city;
private String street;
private int house;
}
@Entity
public class Person extends Document {
private String name;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Address> addresses;
}
(もちろん簡略化)
インスタンスを永続化するときに起こると予想していたPerson
のは、db に 2 つのコレクションが作成されることです。1 つは 用、Person
もう1 つは 用Address
です。
さまざまな継承戦略は Hibernate OGM ではサポートされていません。具象クラスごとのテーブル戦略のみが使用されます。
(サポートされているエンティティ マッピング - Hibernate OGM ドキュメント)
しかし、実際には、Document
2 つのドキュメントを含む名前のコレクションが 1 つだけ作成されます。
{
_id : id1,
DTYPE : Person,
name : name of person
}
{
_id : id2,
DTYPE : Address,
city : City of address,
street : Street of address
house : 3
}
私は何が欠けていますか?
ありがとう