0

私は 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 ドキュメント)

しかし、実際には、Document2 つのドキュメントを含む名前のコレクションが 1 つだけ作成されます。

{ 
    _id : id1, 
    DTYPE : Person, 
    name : name of person
}

{ 
    _id : id2, 
    DTYPE : Address, 
    city : City of address,
    street : Street of address
    house : 3
}

私は何が欠けていますか?
ありがとう

4

1 に答える 1