Scala Slick 2 加入多个字段?

2024-01-04

如何在多个字段上进行连接,如下例所示?

val ownerId = 1
val contactType = 1
...
val contact = for {
  (t, c) <- ContactTypes leftJoin Contacts on (_.id === _.typeId && _.ownerId === ownerId)
  if t.id === contactType
} yield (c.?, t)

如何使用 Slick 2.0.1 实现这一目标?理想情况下,我需要 slick 来生成这种查询

SELECT
    x2."contact_id",
    x2."type_id",
    x2."owner_id",
    x2."value",
    x2."created_on",
    x2."updated_on",
    x3."id",
    x3."type",
    x3."model"
FROM
    (
        SELECT
            x4."id" AS "id",
            x4."type" AS "type",
            x4."model" AS "model"
        FROM
            "contact_types" x4
    )x3
LEFT OUTER JOIN(
    SELECT
        x5."created_on" AS "created_on",
        x5."value" AS "value",
        x5."contact_id" AS "contact_id",
        x5."updated_on" AS "updated_on",
        x5."type_id" AS "type_id",
        x5."owner_id" AS "owner_id"
    FROM
        "contacts" x5
)x2 ON x3."id" = x2."type_id" AND x2.owner_id = 1
WHERE
    (x3."id" = 3)

请注意ON x3."id" = x2."type_id" 且 x2.owner_id = 16


好的,在浏览网站和源代码之后,我想我终于找到了解决方案

leftJoin on() 方法接受以下参数预测:(E1,E2)=> T,所以我们可以这样做

val contacts = for {
  (t, c) <- ContactTypes leftJoin Contacts on ( (type, contact) => {
    type.id === contact.typeId && contact.ownerId === ownerId
  } )
} yield (c.?, t)

其中根据需要生成sql查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala Slick 2 加入多个字段? 的相关文章

  • Scalaz 7 Iteratee 处理大型 zip 文件(OutOfMemoryError)

    我正在尝试使用 scalaz iteratee 包在恒定空间中处理大型 zip 文件 我需要对 zip 文件中的每个文件执行一个长时间运行的进程 这些进程可以 并且应该 并行运行 我创建了一个EnumeratorT使每个膨胀ZipEntry
  • 将 Scala Dataframe 写入 CSV 文件时应用 UTF8 编码

    在 Spark2 Scala 中将数据帧写入 CSV 文件时如何正确应用 UTF8 编码 我正在使用这个 df repartition 1 write mode SaveMode Overwrite format csv option he
  • Liftweb 环境中的后台任务

    我必须编写守护进程 并且我想使用模型来连接到数据库和一些有用的 Lift 类 是否可以运行 Rails 的 rake 任务的模拟 Scala 社区组上也有类似的问题 答案是使用Actors来做后台处理
  • Scala:在运行时获取 mixin 接口

    我需要在运行时从给定的类获取所有接口 全部加载在类加载器中 例如 如果一个类是这样声明的 trait B trait C trait D class A extends B with C with D 我想在运行时获取这些信息 A 取决于
  • 了解如何使用 apply 和 unappy

    我试图更好地理解 的正确用法apply and unapply方法 考虑到我们想要序列化和反序列化的对象 这是正确的用法吗 即斯卡拉方式 的使用apply and unapply case class Foo object Foo appl
  • Scala:如何编写将类型化为接收者的实现类型的对象返回的方法

    我知道 Scala 中不推荐使用案例类继承 但为了简单起见 我在以下示例中使用了它 scala gt case class Foo val f String def foo g String Foo this copy f g define
  • Spark RDD默认分区数

    版本 Spark 1 6 2 Scala 2 10 我正在执行以下命令spark shell 我试图查看 Spark 默认创建的分区数量 val rdd1 sc parallelize 1 to 10 println rdd1 getNum
  • 我想使用 EtherPad(或克隆版本)。我的站点正在运行 Ruby on Rails。 API 还是本地安装?

    我想在我的网站上使用 etherpad 界面 两个问题 1 是否有任何带有 etherpad api 的网站可以让我远程调用 2 如果没有 安装scala并让两者同时运行有多麻烦 Thanks 查看http piratepad net ht
  • 如何使用 apply/unapply 方法重现案例类行为?

    我尝试用普通类和伴生对象替换案例类 但突然出现类型错误 编译良好的代码 综合示例 trait Elem A B def C other Elem C A Elem C B other match case Chain head tail g
  • Scala Array.apply 有何魔力

    来自 scala 2 10 4 的 array scala Array定义为 final class Array T length Int extends java io Serializable with java lang Clonea
  • 最小重复子串

    我正在看 Perl代码高尔夫页面 http www perlmonks org node id 82878 不要问为什么 并遇到了这个 第 3 洞 最小重复图案 编写一个子例程 它接受一个字符串 该字符串可能包含 重复模式 并返回最小的重复
  • 如何从 SparkSQL DataFrame 中的 MapType 列获取键和值

    我的镶木地板文件中有数据 该文件有 2 个字段 object id String and alpha Map lt gt 它被读入 SparkSQL 中的数据帧 其架构如下所示 scala gt alphaDF printSchema ro
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 在 Scala 和 SBT 中调试较长的编译时间

    在我的 Scala SBT 项目中 我有一个文件需要 5 分钟才能编译 所有其他的都可以在几秒钟内编译 这使得开发非常痛苦 我确信我滥用了一些 Scala 构造 但我不知道如何调试它 如何在 Scala 中调试较长的编译时间 我正在使用 S
  • 错误:协变类型 A 出现在逆变位置

    我试图写一个不可变的Matrix A 班级 我希望该类是协变的A但是当我把 在 前面A编译器开始抱怨类中的某些操作 以下是我的相关子集Matrix类 实际类比以下子集大 5 倍左右 class Matrix A private val co
  • Scala:如何在超类上实现克隆方法,并在子类中使用它?

    我可能会以错误的方式处理这个问题 但我想要一个像这样的对象 class MyDataStructure def myClone val clone new MyDataStructure do stuff to make clone the
  • 缓存 Slick DBIO 操作

    我正在尝试加快 SELECT FROM WHERE name 的速度Play 中的查询类型 Scala 应用程序 我正在使用 Play 2 4 Scala 2 11 play slick 1 1 1 包 该软件包使用Slick 3 1版本
  • 类型级编程有哪些示例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白 类型级编程 是什么意思 也无法使用Google找到合适的解释 有人可以提供一个演示类型级编程的示例吗 范式的解释和 或定义将
  • Scala 特性:val/def 和 require

    下面的代码抛出IllegalArgumentException trait T val x Long require x gt 0 object T extends App val y new T val x 42L 而以下情况则不然 tr
  • 玩:将表单字段绑定到双精度型?

    也许我只是忽略了一些明显的事情 但我无法弄清楚如何将表单字段绑定到 Play 控制器中的双精度型 例如 假设这是我的模型 case class SavingsGoal timeframeInMonths Option Int amount

随机推荐

  • NSManagedObject的hasChanges为true,而changedValues为空

    我正在尝试观察个人NSManagedObject变化于NSManagedObjectContextWillSaveNotification void managedObjectContextWillSave NSNotification n
  • 在 VS 2015 和 VS 2013 上运行同一段代码时出现问题

    在 Visual Studio 2013 和 2015 中运行一段代码时 我得到两种不同的结果 在 Visual Studio 2015 上 我得到一个 NullReference 在 2013 年 它按应有的方式工作 Visual Stu
  • 将 JSON NSData 转换为 NSDictionary

    我正在使用 Web 服务的 API 服务 在他们的描述中写道 他们发送 JSON 数据 在我看来 这些数据也与我从中得到的响应相匹配 这是我从 NSURLConnection Delegate connection didReceiveDa
  • 如何创建类的ArrayList?

    如何将一堆类添加到ArrayList
  • 仅使用静态多态性的异构容器

    我的目标是实现一个容器 这里是一组堆栈 每种类型一个 它同时接受许多不同类型的对象 使用 void 指针 或所有存储类型的公共基类 和运行时类型标识 RTTI 在运行时执行此操作非常简单 由于容器将保存的所有类型在编译时都是已知的 因此可能
  • 如何使用 MailApp 在电子邮件中包含内嵌图像

    我有一个简单的 MailApp 来发送 HTML 格式的文本 我的小问题是 如何在该文本中插入内嵌图像 例如 我想为荷兰语文本添加荷兰国旗 为法语内容添加法国国旗 我认为只使用 HTML 代码就可以完成这项工作 但可惜的是 没有这样的运气
  • 更改引荐来源网址的值[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Javascript 中手动设置 REFERER 标头 https stackoverflow com questions 9580575 how to manually set refere
  • 像工具一样的行为:自定义视图中的文本?

    我有一个自定义视图 布局中有两个文本视图 我们来叫一个key和另一个value 所以你知道怎么做TextView有这个吗
  • 如何从 Minecraft 编辑 .mca 文件?

    介绍 我想将我的各个 Minecraft 世界合并成一个世界 这似乎是一个相对容易的壮举 但随着我的研究 它演变成需要制作一个自定义程序 奋斗 我首先移动区域文件并将它们合并到一个区域文件夹中 这似乎是显而易见的解决方案 而且几乎有效 注意
  • 如何在Plone 5上自定义folder_contents?

    我在 Plone 5 上 我想修改默认显示的列数 folder contents 如果我没记错的话 整个table是一种在相应标签上使用相当大的 JSON data xxx 参数进行初始化的模式 那么 我应该深入研究 JSON 还是将注意力
  • 使用 jQuery 绘制动画线条

    我想使用 jQuery 来创建就像用隐形笔绘制线条图的效果 有点像这样 http d2fhka9tf2vaj2 cloudfront net tuts 152 QTiPad Milestones JavaScriptWebsite html
  • 如何修复 facebook Messenger-checkbox 的 CSP 问题

    我正在努力使Facebook Messenger 复选框 https developers facebook com docs messenger platform plugin reference checkbox plugin工作 我已
  • SKLabelNode没有透明背景

    您好 我在 SKLabelNode 上使用自定义字体 我可以设置字体颜色 但是还可以 但是文本的内部部分是透明的 例如 有什么方法可以将这种颜色设置为白色吗 到目前为止我的代码 scoreLabel fontColor SKColor co
  • 发布集合和 ModelState

    我的 MVC 应用程序中有一个问题 我不确定如何解决 或者我是否以错误的方式解决它 我有一个控制器 视图 它在带有复选框的网格中显示项目列表 当这些项目发布到我的控制器时 我想根据传入的 id 从数据库中删除行 该视图看起来像这样 for
  • 强制 IE9 使用浏览器模式而不是兼容模式

    我在用 in head标签 但是 当我在 IE9 上运行我的应用程序时 它使用浏览器模式 IE 9 紧凑视图 我希望我的应用程序仅使用浏览器模式 IE9 not 兼容视图 我意识到我在这方面有点晚了 但这是我使用过的并且它对我有用 确保这是
  • html5画布中的“擦除”

    我在 html5 canvas 中有一个涂鸦应用程序 我正在尝试找出实现橡皮擦控件的最佳方法 第一个冲动只是让橡皮擦绘制背景颜色 白色 但这是有问题的 因为如果用户将图像或另一层移动到他们之前擦除的位置 他们会在擦除的位置看到白色绘图 理想
  • FetchXml 中的左连接?

    如何使用 FetchXml 进行左连接 考虑一个简单的 SQL 查询 如下所示 select person name address city from person left join address on person addressi
  • QToolTip 中包含的变量不会自动更新

    我在 QLineEdit 上有一个 QToolTip 并且工具提示包含文本中的变量 工具提示代码包含在 init h 文件中 问题是工具提示中的变量值在程序运行中发生更改时不会自动更新 例如 我将鼠标悬停在行编辑上 值会显示在工具提示中 我
  • 在 JavaScript 中为属性添加别名

    我认为这很简单 有没有一种简单的方法来添加属性的辅助名称 我认为这是特定于字符串的 我不确定 即 c length this line pseudo code hello world length returns 11 hello worl
  • Scala Slick 2 加入多个字段?

    如何在多个字段上进行连接 如下例所示 val ownerId 1 val contactType 1 val contact for t c lt ContactTypes leftJoin Contacts on id typeId ow