【发布时间】:2013-05-29 15:33:14
【问题描述】:
我为如何在 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 - video how to do it ,但它再次只保存 id 和 url。我查看了 MySQL 数据库和表,类名只有 2 个属性(id 和 url),没有我的 HashMap 的痕迹。
Update2:添加了打印屏幕 - with database query.
Update3:来自 Play 的示例“computer-database-jpa”工作正常,因此 JPA 应该没问题,但该示例没有使用 Map (HashMap)。我什至用 EclipseLink 更改了休眠模式,但仍然无法正常工作。 :((尽管所有基本类型属性都在数据库中)
【问题讨论】:
-
你在play框架文件夹中看到提供的示例项目(computer-database-jpa)来验证配置。
-
我从 java 文件夹中测试了 computer-database-jpa 并且工作正常。
-
我认为这与 Play Framework 没有任何关系。保存了其他属性,因此持久性正在工作。你应该修改你的问题的标题和标签,你会有更多的答案。
标签: jakarta-ee jpa playframework playframework-2.0