如何使用activate框架更新嵌套列表表

时间:2014-08-23 09:09:58

标签: scala playframework

我有两个实体TaskCommentComment实体中有Task列表。当我为特定任务发布新评论时,我该怎么办?我应该先创建一个新的评论吗?如果我创建一个新的Comment,数据库怎么知道它属于哪个任务?

以下是我的观点:

case class Task (
    var title: String,
    var description: String,
    var estimate: Int,
    var time_start: String,
    var time_end: String,
    var state: String,
    var created_at: String,
    var created_by: String,
    var modified_at: String,
    var modified_by: String,
    var members: scala.collection.immutable.List[User],
    var comments: scala.collection.immutable.List[Comment])
      extends Entity

case class Comment (
        var content: String,
        var created_at: String,
        var edited_at: String,
        var last_comment: String)
      extends Entity

我使用createTableForAllEntities创建表格,并自动创建一个表格:

CREATE CACHED TABLE PUBLIC.TASKCOMMENTS(
    OWNER VARCHAR(1000),
    VALUE VARCHAR(45),
    POS INTEGER
)

我想我需要更新那个嵌套列表表,但是如何?

我在play的教程中找到了一个东西:

当您使用这样的重复数据时,发送的表单值 浏览器必须命名为电子邮件[0],电子邮件[1],电子邮件[2]等。

所以我认为我应该通过这种方式编辑任务的json,但是如何?

我首先尝试创建一个新的评论,然后从数据库中获取它。然后使用

val toUpdate = new EntityMap[Task](oldT)
val oldComments = toUpdate.get(_.comments).getOrElse(List())
val newComments = oldComments :+ newC
toUpdate.put(_.comments)(newComments)
transactional(toUpdate.updateEntity(oldT.id))

它仍然无法更新评论!

0 个答案:

没有答案