gpt4 book ai didi

java - 使用 JPA 1.0 来替代 @ElementCollection 来持久化 Map

转载 作者:行者123 更新时间:2023-11-29 08:50:37 26 4
gpt4 key购买 nike

我正在尝试将一个简单的属性映射作为我的一个持久化对象的键值对进行持久化。我在这件事上找到了很好的指南here .但它仅显示了当键的值是映射对象(具有“映射者”属性)时如何映射。我的场景比这简单。我所需要的只是坚持 Map<String, String>对于键值对。我发现我可以使用 @ElementCollection但它仅在 JPA 2 上受支持(我正在使用的平台仍在 JPA1 上)。

到目前为止,我的代码是这样的:

@Entity
public class MyClass {

private Map<String, String> attributes;

@OneToMany
@MapKey(name="key")
@JoinTable(name="MyClass_attributes")
public Map<String, String> getAttributes () {
return this.attributes;
}

public void setAttributes(Map<String, String> attributes) {
this.attributes = attributes;
}

}

但是我收到了这个错误:

Caused by: org.hibernate.AnnotationException: 
Use of @OneToMany or @ManyToMany targeting
an unmapped class: mypackage.MyClass.attributes[java.lang.String]

最佳答案

尝试为 map 的值创建一个类,例如 TargetClass。那么 map 将是这样的:

private Map<String, TargetClass> attributes;

在这种情况下,不需要 JoinTable。

关于java - 使用 JPA 1.0 来替代 @ElementCollection 来持久化 Map<String,String>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com