Scala SQLite 对 DELETE 的无效查询
Scala SQLite Invalid Query for DELETE
我在尝试添加一行然后从 table 中删除一行时遇到问题。我现在拥有的是:
def addItem(item:Item)={
val query = items.filter(_.name === name)
items += (item.name,item.timestamp)
if(query.list.length > 10)
{
query.sortBy(timestamp).take(1).delete
}
}
应该在数据库中存储 10 个最新的项目,如果超过 10 个,则删除最旧的项目。
但我收到一条错误消息
SlickException : Invalid query for DELETE statement: A single source table is required, found List((s2,Comprehension))
我在数据库中确实有另一个 table 但这应该与那个无关,两个 table 之间甚至没有关系。
你知道哪里出了问题吗?或者是否有另一种方法只在数据库中保留最后 10 个值。时间戳是 java.sql.timestamp 并且我正在为 Scala 的 SQLite 使用 Slick 库。此外,class 项仅包含一个字符串和一个时间戳。
谢谢!感谢您的帮助!
好的,似乎 delete
出于某种原因不能与 take
一起使用,正如评论中提到的那样。除了 take
之外,似乎没有任何其他方法可以将查询的第一个元素 select 作为查询。 .first
例如 returns 行的实际数据而不是第一个元素的查询,因此 delete
不能应用于它。
我为让它工作所做的是一种解决方法:
val oldestTime = query.sortBy(timestamp).first._2 //selects the timestamp of the oldest element
query.filter(._timestamp === oldestTime).delete // deletes all rows with that timestamp
我希望有一天这对某人有所帮助。
我在尝试添加一行然后从 table 中删除一行时遇到问题。我现在拥有的是:
def addItem(item:Item)={
val query = items.filter(_.name === name)
items += (item.name,item.timestamp)
if(query.list.length > 10)
{
query.sortBy(timestamp).take(1).delete
}
}
应该在数据库中存储 10 个最新的项目,如果超过 10 个,则删除最旧的项目。
但我收到一条错误消息
SlickException : Invalid query for DELETE statement: A single source table is required, found List((s2,Comprehension))
我在数据库中确实有另一个 table 但这应该与那个无关,两个 table 之间甚至没有关系。
你知道哪里出了问题吗?或者是否有另一种方法只在数据库中保留最后 10 个值。时间戳是 java.sql.timestamp 并且我正在为 Scala 的 SQLite 使用 Slick 库。此外,class 项仅包含一个字符串和一个时间戳。
谢谢!感谢您的帮助!
好的,似乎 delete
出于某种原因不能与 take
一起使用,正如评论中提到的那样。除了 take
之外,似乎没有任何其他方法可以将查询的第一个元素 select 作为查询。 .first
例如 returns 行的实际数据而不是第一个元素的查询,因此 delete
不能应用于它。
我为让它工作所做的是一种解决方法:
val oldestTime = query.sortBy(timestamp).first._2 //selects the timestamp of the oldest element
query.filter(._timestamp === oldestTime).delete // deletes all rows with that timestamp
我希望有一天这对某人有所帮助。