Slick 中具有不同数据类型的列的左连接

Left join of columns with different datatypes in Slick

我遇到这样一种情况,一列是 Bigint,一列是 table,另一列是 varchar。我正在为应用程序使用 ScalaSlick。问题是我需要对这两列进行 Left Join,但由于类型不匹配而出现编译错误。 我可以将 DB 列从 BigInt 更改为 varchar,但是我将不得不在很多地方进行更改。有什么方法可以避免更改 table 和相关实体?

你可以cast整数到字符串,例如

LEFT JOIN mytable on myint::text = mytext

您也可以使用CAST(myint as varchar)

看看here.

您可以使用其方法 asColumnOf 和适当的类型参数来转换类型 Column 的值。这样生成的 sql 也将包含连接条件中的转换。

类似于:

for {
    (a, b) <- aTable.leftJoin(bTable).on(_.someColumn === _.anotherColumn.asColumnOf[Long])
} yield (a, b)