0

我有这个模型:

@Entity
public class ImageModel extends Model {
@Id
private String id;
private String url;

@ManyToMany(cascade = CascadeType.ALL)
private Map<String,String> tags = new HashMap<>();

public void add(String key, String value){
    tags.put(key,value);
}

public String get(String key){
     return tags.get(key);
}

}

这就是我创建新对象的方式:

 ImageModel imageModel = new ImageModel();
/* fill object with data */
imageModel.save(); // I saved it

但是当我尝试检索数据时,HashMap 的记录为零:

HashMap<String, String> imageTags = (HashMap<String, String>) imageModel.getTags();

我该怎么办,所以来自 hashmap 的信息也会被保存?我已经查看了其他 SO 帖子并尝试过,但似乎没有任何效果:@ManyToMany(cascade = CascadeType.ALL) JPA Map<String,String> 映射

我必须说我正在使用 Play framework 2.1 。

4

1 回答 1

0

您似乎正在尝试使用 ManyToMany,它在引用具有自己的表和标识的实体时使用。字符串不是实体,因此您可能希望将 elementCollection 用于简单类型。此处讨论了 ElementCollections http://wiki.eclipse.org/EclipseLink/Examples/JPA/2.0/ElementCollections ,其中使用了此处显示的地图的简单示例:http: //wiki.eclipse.org/EclipseLink/Development/JPA2.0 /Extended_Map_support#Basic__-_Basic.2Fembeddable

于 2013-05-24T17:27:16.873 回答