1

在 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是一个Stringtags是一个List<String>。调试日志说

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

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

编辑:生成的 SQL 创建语法根本不包含“标签”。所以这显然有问题。

编辑:请参阅如何在 JPA 中保留 List<String> 类型的属性?

4

1 回答 1

1

在 JPA 中,您必须将 List 声明为@ElementCollection才能持久化。EBean 似乎不支持此功能。

一种方法应该是将您的列表标签声明为@Transient(即不持久化)并具有管理它的方法,同时保持最新的包含您的标签逗号分隔的简单字符串。那将是这个字符串,它被保存在一个列中。

于 2013-09-23T10:09:38.190 回答