在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);
其中title
是String
而tags
是List<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?
答案 0 :(得分:1)
在JPA中,您必须将列表声明为@ElementCollection才能保留它。似乎EBean不支持此功能。
执行此操作的一种方法应该是将List标记声明为@Transient(即不保留)并使用方法对其进行管理,同时保持最新的包含标记逗号分隔的简单String。那就是这个String被保存在一个列中。