我剛剛開始使用Hibernate ORM學習Java數據庫持久性,並遇到了一個我無法解決的問題。休眠 - 堅持嵌入式資源
我有以下兩類:
@Embeddable
public class Resource {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Resource() {
}
}
@Entity
public class Group {
@Embedded
private Map<String, Resource> resources;
@Id
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, Resource> getResources() {
return resources;
}
public void setResources(Map<String, Resource> resources) {
this.resources = resources;
}
public Group() {
resources = new HashMap<String, Resource>();
}
}
資源不應該有自己的表,因爲它不應該在集團範圍之外存在。這就是爲什麼我使用Embeddable作爲組件處理的原因。
總結我想知道如何使用Hibernate ORM將這些類存儲在數據庫中。 Resource類不應該是一個實體,因爲它不需要它自己的類。
我寧願使用映射符號而不使用XML文件。
因爲它是我得到這個錯誤:
Syntax error in SQL statement "INSERT INTO GROUP[*] (NAME) VALUES (?) "; expected "identifier"; SQL statement:
如果一個組可以有多個資源,那麼您希望如何在不創建另一個表的情況下存儲它們? – Affe 2012-03-06 00:15:45
不能像任何其他屬性一樣被序列化嗎?像一個字符串? 還是我得到嵌入錯誤? – 2012-03-06 00:17:39
@doubter - 嵌入式集合需要單獨的表進行存儲。原因應該非常明顯 - 集合表示主實體和嵌入式實體之間的一對多關係,它不能(在一個表中)(正確)表示。 – Perception 2012-03-06 00:20:50