Slick 中具有不同数据类型的列的左连接
Left join of columns with different datatypes in Slick
我遇到这样一种情况,一列是 Bigint
,一列是 table,另一列是 varchar
。我正在为应用程序使用 Scala
和 Slick
。问题是我需要对这两列进行 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)
我遇到这样一种情况,一列是 Bigint
,一列是 table,另一列是 varchar
。我正在为应用程序使用 Scala
和 Slick
。问题是我需要对这两列进行 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)