0
Slickを使ってMyISAMエンジンを使ってレガシーMySQLデータベースを分析しています。また、エンティティをナビゲートするために暗黙のクラスを使用しています。このコードでuser.logs
:Slick:Rep [Option [Blob]]とRep [Int]を比較する
implicit class UserNav(user: User) {
def logs = Logs.filter(_.userId === user.id)
}
しかしながら、この場合、キーはINTであるが、外部キーがBLOBです。 MySQLクライアントを使用して、select userId * 1 from logs
を実行してBLOBからINTを取得することができ、異なるデータ型にもかかわらず結合することができます。しかし、Slickでは上記のコードのコンパイルエラーが発生します。
error: Cannot perform option-mapped operation [ERROR]
with type: (Option[java.sql.Blob], Int) => R [ERROR]
for base type:(java.sql.Blob, java.sql.Blob) => Boolean
error: ambiguous implicit values:
both value BooleanOptionColumnCanBeQueryCondition in object CanBeQueryCondition of type => slick.lifted.CanBeQueryCondition[slick.lifted.Rep[Option[Boolean]]]
and value BooleanCanBeQueryCondition in object CanBeQueryCondition of type => slick.lifted.CanBeQueryCondition[Boolean]
match expected type slick.lifted.CanBeQueryCondition[Nothing]
これを解決する方法はありますか?
はどうなりますか...
は、代わりに私はまた、元
val userId
でのデータ型を置き換えることができたが、その後、私はまた、すべてのLog.*
とLog.?
のような場所の上にそのデータ型を変更する必要があります'Int'に? –@bobあなたが何を意味するか分かりません。しかし、私はデータベースを変更することはできません。それはまだ使用中です(読み書きの両方)。 – mbee
私はあなたが 'BLOB'を使うことができないことを知っていると言っているので、' BLOB'を 'Int'に変換してSlickが使用できるようにする必要があります。あなたは何をしますか? –