我为如何在 Play 中使用 JPA 存储 HashMap 苦苦挣扎了将近一周。存储所有其他属性,只有 HashMap 有零个元素(为空)。
public class ImageModel extends Model {
@Id
private String id;
private String url;
@ElementCollection(targetClass = java.lang.String.class)
@MapKeyClass(java.lang.String.class)
private Map<String,String> tags = new HashMap<>();
// the method for adding keys and values to the HashMap
public void add(String key, String value){
tags.put(key,value);
this.save();
}
}
我还尝试注释:
@ElementCollection(fetch=FetchType.LAZY)
所以,我现在唯一的猜测是我没有很好地配置 Play。(我必须说我使用的是Play2并且没有配置任何东西,除了删除数据库设置前面的“#”(注释标记))。
On Play 文档说:“ Play 2.0 中没有内置的 JPA 实现”。会是这样吗?
更新:我做了一些研究,并说这可能是因为我使用的是 Play - H2 的默认数据库。我尝试使用 MySQL -视频如何做到这一点,但它再次只保存了 id 和 url。我查看了 MySQL 数据库和表,类名只有 2 个属性(id 和 url),没有我的 HashMap 的痕迹。
更新 2:添加了一个打印屏幕 -带有数据库查询。
更新3:来自 Play 的示例“computer-database-jpa”工作正常,所以 JPA 应该没问题,但该示例没有使用 Map (HashMap)。我什至用 EclipseLink 更改了休眠模式,但仍然无法正常工作。:((虽然,所有基本类型属性都在数据库中)