【发布时间】:2023-03-31 14:43:02
【问题描述】:
我正在编写一个生成 SQL 的 DSL。加载表的语法是:
session.activateWhere( _.User.ID == 490 )
这将从 ID 列为 490 的 User 表中进行选择。我可以使用“==”,因为我可以覆盖“equals()”来生成正确的 SQL。我的问题是“!=”不起作用,因为它调用 equals() 然后否定结果。可悲的是“!=”是最终的,所以我不能覆盖它。我的 equals() 方法中有什么方法可以告诉它是作为 != 的一部分调用的吗?
我已经实现了一个“”操作,它在逻辑上与“!=”做同样的事情,它工作正常:
session.activateWhere( _.User.ID <> 490 )
我的问题是,“!=”不仅是有效的语法(对编译器而言),而且它会运行并生成与用户想要的完全相反的内容。
【问题讨论】:
-
<>无论如何都是 SQL“不等于”运算符。 -
您要修复 Slick 吗? ;) slick.typesafe.com/doc/3.0.0/queries.html
标签: scala overriding equals equals-operator