我JPA實體是這樣的:地圖<String,字符串>使用JPA
@Entity
@Table(name = "ATTRIBUTE")
public class Attribute {
//ID stuff
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "VALUE", nullable = false)
private String value;
//getters and setters
}
而其他實體:
@Entity
@Table(name = "ATTRIBUTE_GROUP")
public class AttributeGroup {
//ID stuff
@ElementCollection(fetch = FetchType.LAZY, targetClass = java.lang.String.class)
@CollectionTable(name = "ATTRIBUTE")
@MapKeyColumn(name = "NAME")
@Column(name = "VALUE")
private Map<String, String> attributes = new HashMap<>();
public void createAttribute(String name, String value) {
Attribute attribute = new Attribute();
attribute.setName(name);
attribute.setValue(value);
attribute.setAttributeGroup(this);
attributes.put(name, value);
}
public Map<String, String> getAttributes() {
return attributes;
}
}
我必須AttributeGroup
實體的映射裏面會有Attribute
作爲一個關鍵字的價值和Attribute
的價值。
目前的方法不適合我。當我試圖將記錄保存到數據庫時,它會生成異常,該事務僅標記爲回收。我不知道這是否是寫作方式,如果它不工作,顯然不是。
我該如何在JPA中實現這樣的地圖AttributeGroup
由Attribute
構成名稱/值的配對對象?
我通過EntityManager使用Hibernate。
強制使用hibernate註釋嗎?我們不能去尋找xml映射嗎? –
是的,我需要堅持JPA方法,hibernate只是一個實現,因爲我們將來可能會遷移到OpenJPA。 – user2219247
發佈異常的完整堆棧跟蹤以及導致異常的代碼。另外,Attribute實體的重點是什麼?你似乎沒有使用它。你在你的方法中創建一個新的屬性,但不要對它做任何事情。 –