0
我使用mongodb來存儲json文檔,並且因爲我使用Hibernate ORM來處理關係模型,所以我決定使用OGM作爲mongo的OGM。表具有Hibernate OGM和mongodb的具體類
目前我所有的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
實例是會發生這兩個集合將在數據庫中創建,一個用於Person
,另一個用於Address
,我推斷:
弗吉尼亞州rious繼承策略不會由Hibernate OGM支持, 只有每個具體類策略表用於
(Supported entity mapping - Hibernate OGM documentation)
但是發生在現實情況是,只有一個集合名稱爲Document
與創建其中兩個文件:
{
_id : id1,
DTYPE : Person,
name : name of person
}
{
_id : id2,
DTYPE : Address,
city : City of address,
street : Street of address
house : 3
}
我錯過了什麼?
感謝
呀,想它會一直這麼簡單,但它不是..接着我在我的問題所引用的部分(從文檔)它規定「只是不要使用@Inheritance和@ DiscriminatorColumn' –
我的初步答覆是基於文檔而沒有實際測試它,但是我已經決定嘗試一下並不會傷害,並猜測是什麼,它確實有效,即使文檔說不要。謝謝 –
很酷,我會打開一個JIRa來更新文檔 – Davide