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

我希望有一天这对某人有所帮助。