【发布时间】:2013-05-20 08:42:26
【问题描述】:
我有这个模型:
@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> mapping
我必须说我使用的是 Play framework 2.1。
【问题讨论】:
-
你需要通过更多的注解来描述地图对应的实体,
@Join等等。 docs.oracle.com/javaee/6/tutorial/doc/bnbqa.html -
@Matt Ball,感谢您如此迅速的回复,感谢您的帮助。但你能告诉我更多吗?我没有使用 JPA 的经验。为什么我需要@Join?我只想存储该哈希映射并检索它。 (对不起,我的愚蠢)。
-
根据定义,多对多意味着你想跨表连接,但是你没有告诉JPA要连接哪些表。如果您只是想将
Map存储在实体表中,不要使用@ManyToMany(或任何其他关系)。
标签: java jpa playframework playframework-2.0