play2 - 保存模型的字符串列表不会坚持

时间:2013-09-23 07:40:37

标签: java list playframework-2.0 persistence

在Play2项目的我的(java)控制器中,我将一些数据保存到对象中。 所以entity这里是Model子类的实例。

我做这样的事情

log.debug("Saving title=" + title + ", tags=" + tags);
entity.title = title;
entity.tags = tags;
entity.save();
// verify:
ModelClass m = ModelClass.find.byId(entity.id);
log.debug("Saved title=" + m.title + ", tags=" + m.tags);

其中titleStringtagsList<String>。调试日志说

Saving title=foo, tags=[bar, quux]
Saved title=foo, tags=null

所以数据正在进入,我没有得到任何警告,但字符串列表只是在途中丢失了。我只是使用内存中的h2 db,也许它可以在我真正坚持它的时候工作,但是......这有什么用呢?

编辑:生成的SQL创建语法根本不包含“标记”。所以这显然有些不对劲。

修改:请参阅How to persist a property of type List<String> in JPA?

1 个答案:

答案 0 :(得分:1)

在JPA中,您必须将列表声明为@ElementCollection才能保留它。似乎EBean不支持此功能。

执行此操作的一种方法应该是将List标记声明为@Transient(即不保留)并使用方法对其进行管理,同时保持最新的包含标记逗号分隔的简单String。那就是这个String被保存在一个列中。