【问题标题】:play2 - saving list of strings to model won't stickplay2 - 将字符串列表保存到模型不会粘住
【发布时间】:2013-09-28 00:59:16
【问题描述】:

在 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?

【问题讨论】:

  • 您的 entity.save() 似乎有问题
  • 好吧,我没有 实现 save(),它只是使用 play.db.ebean.Model.save() 方法。

标签: java list playframework-2.0 persistence


【解决方案1】:

在 JPA 中,您必须将 List 声明为 @ElementCollection 才能持久化。 EBean 好像不支持这个功能。

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

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多