我有两个实体Task
和Comment
。 Comment
实体中有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))
它仍然无法更新评论!