问题标签 [slick-2.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 没有为 scala.slick.lifted.ColumnOrdered[Long] 定义隐式排序
我通过播放插件使用 slick 2.0,以下是我的表映射
然后,我像这样创建了 TableQuery 对象
val tasks = TableQuery[Tasks]
我曾经tasks.list
得到List[Task]
正确返回的结果,但是当我想通过使用对结果进行排序时,tasks.list.sortBy(_.id.get.desc)
我得到了这个错误
没有为 scala.slick.lifted.ColumnOrdered[Long] 定义隐式排序。
任何想法?
playframework - Errors when converting to postgres
Background
- Play 2.3
- Slick 2.1
- Play-Slick 0.7
- Running in Typesafe Activator
I have a pretty basic Play and Slick-based application. Up to now I've been using the in-memory h2 database used by default in most of the examples.
In application.conf
I have the following lines:
If I use
for any code which interacts with the database, the application knows to pull in the defines in application.conf
and the following happens when I run my application:
- evolutions.default/1.sql is created
- a new h2 database is instantiated in memory
- 1.sql is run on that db
- the application can interact with the db
Problem
I want to migrate to using a Postgres db, so I've changed application.conf
to:
and I've added the following to my build.sbt
However, if I write a test like the following:
I get a few errors which I don't understand:
[error] p.a.d.s.d.TableScanner$ - Got an error converting to DDL. Check whether the profile used for the Table/TableQuery is the same one used by DDL generation.
[info] foospec
[info] DB should
[info] ! store Foos
[error] SlickException: JdbcProfile has no TypeInfo for type Int/INTEGER
(I have a stack trace for the error if needed, but I've left it out for now)
Any idea what I've done wrong?
scala - 当使用带有 Slick 2.0 的 DAO 时,我的数据库访问方法应该放在哪里?
(这个问题是基于一个非常相似的先前请求帮助。随着 DAO 和多个数据库驱动程序的引入,同样的问题需要不同的方法,我希望保证一个新的 SO 问题。)
我有一个这样定义的class
和光滑的Table
:
还有一个数据访问对象:
这非常棒,因为现在我可以在我的application.conf
:
...如果我在控制器中执行以下操作:
我可以访问我的foos
TableQuery
,它会自动获取为db.default
in提供的驱动程序和数据库 url application.conf
。
以类似但不太好的方式,我可以在我的测试中执行以下操作Specification
:
但是,如果我想定义一个可以作用于 a 的方法TableQuery[Foo]
怎么办?像这样的东西:
问题
编写findByTitle
方法的正确方法是什么,我应该把它放在哪里,以便我可以:
- 以一种不会与作用于 的同名方法冲突的方式调用它
TableQuery[Bar]
。来自 OO,我觉得我想做类似的事情foos.findByTitle("someFoo")
,但如果有更好的方法来实现这种功能风格,我愿意接受建议。 - 从应用程序控制器调用它,以便查询将与我的
db.default
h2 驱动程序一起使用,并从我的测试中调用它,Specification
以便它与我的db.test
postgres 驱动程序一起使用。
顺便说一句,如果我可以把它放在我的 DAO 中:
然后import models.dao.current._
在我想使用此 DAO 的任何地方,如何将相同的表单扩展到以下内容:
如果我尝试这样做,编译器会抱怨没有an implicit Application in scope
.
scala - Slick:从 groupBy "group" 中获取元素
从 groupBy 的“组”部分选择元素的首选方法是什么?(groupBy 导致 [key -> group] 关系)。如果可能的话,它应该会导致一个分贝命中,或者至少是一个恒定数量的命中。
例如,假设我们有一个 Locations(id) 和一个 Companies(id, locationId,foundedDate) 表。我们如何才能找到每个地点最古老的公司?
我会这样做:
但这会产生运行时异常:
scala - 光滑的构建过滤条件
我认为下面的代码大多不言自明,但这里有一个简短的解释。
我有一个需要添加到查询条件的 id 列表。我可以轻松地将条件“和”到查询中(见val incorrect
下文),但在想出一个“或”条件的好方法时遇到了麻烦。
id 列表不是静态的,我只是在其中放一些作为示例。如果可能的话,我想知道如何使用 for 理解而不使用 for 理解。
此外,如果您想运行代码,您应该能够将此代码放入 repl 并添加一些导入。
scala - 将类映射为类中的列类型
我了解在使用诸如Long, Int, String
etc 之类的类型时这是如何完成的。但是假设我有一个类在另一个类中有字段,如下所示:
Foo
我将如何为我的自定义类型(在我的类中)设置映射器Bar
?
(文档链接)
更新:
数据库驱动程序:slick.driver.PostgresDriver
光滑 2
我猜原始 SQL 应该是这样的:
应该可以这样调用Bar
:
slick - Scala slick 2.0 updateAll 等同于 insertALL?
寻找一种使用 slick 进行批量更新的方法。是否有与 insertALL 等效的 updateAll?到目前为止,古尔的研究让我失望了。
我有一个具有不同状态的案例类列表。每个都有不同的数值,所以我无法运行典型的更新查询。同时,我想保存多个更新请求,因为我想同时更新数千条记录。
scala - 光滑的“===”编译仅用于理解
我遇到了一种奇怪的行为,我需要一些帮助来弄清楚为什么会发生这种情况。问题是我有一个查询如下:
这不会编译产生如下错误:
但是,如果我将代码重写为:
它编译并且工作正常。
该表定义如下:
我有一个隐式转换来映射 UserId 类型:
它看起来像一个类型推断问题,但我无法真正理解它为什么会发生。
任何人都知道为什么在我报告的两种情况下这应该表现不同?
编辑:经过一番调查,我发现当使用where
隐式转换时userIdColumnType
,必须在范围内,而使用 for 理解则不需要。对此有很好的解释吗?
scala - 使用 Play Scala 时如何在 Slick 列映射中修剪选项字符串
将 Play 框架与 Slick 一起使用时,从固定字符数据库列中修剪值的正确方法是什么,正确的位置在哪里?
我要修剪字符串的原因是数据库模式指定了character(40)
列类型而不是character varying
类型。
我有这个案例类:
我有这个光滑的表关系:
我有这个带有 JSON 映射的测试类:
这一切都有效,但返回一个空格填充的字符串。
我在 JSON 映射器中尝试了一些修剪变体:
trim1
上面的工作,null
但当可选值不存在时返回。
trim2
确实适用于所有情况,但我已经在各个地方看到它map
比getForElse
使用fold
.
trim3
刚刚超出了我目前对 Scala 的理解的限制,并显示了我的意图但没有编译。
情况下的编译错误trim3
为:
类型不匹配; 找到:所需对象:play.api.libs.json.Json.JsValueWrapper
我当然可以接受 using fold
,但是通常的方法是什么?
scala - 如何为 slick2 编写类和表类映射而不是使用案例类?
我之前使用案例类将类对象转换为slick2的数据,但目前我使用另一个播放插件,插件对象使用案例类,我的类是这个案例类所固有的。所以,我不能使用case类作为scala语言禁止用例类对case类固有的。
前:
有用。但是现在我需要将上面的内容更改为以下内容:
我不知道如何编写自动生成的案例类模板之类的元组和取消应用(我不是我的写作是否正确)方法。或者你可以用其他方式通过 slick2 将类映射到 talbe。
任何人都可以给我一个例子吗?