问题标签 [anorm]
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.
database - 玩 Scala:如何使用 anorm 和 Magic 访问多个数据库[T]
我想用 anorm 和 Magic[T] 访问 Play Scala 中的两个数据库(一个是 H2,另一个是 PostgreSQL)。就是不知道怎么配置。。。
我注意到我们可以在 conf/application.conf 中设置另一个数据库连接
但是,我如何将它与 Magic 一起使用?(我看了Magic的源代码但是看不懂……我是Scala的大一新生)
无论如何,如果使用 Magic[T] 无法访问多个数据库,我希望使用 anorm 来完成,那么我该如何配置呢?
java - Scala 播放异常;返回的数据库对象,以一种不荒谬的方式获取其属性的值
您好,我对 Scala 相当陌生。
我想学习 Scala,因为:
- 摆脱 Java 中的样板代码。
- 玩不同的范式。
- 只是为了学习新事物的乐趣
我正在关注戏剧网站上的教程。
下面是教程代码:
为了获得更深入的知识,我尝试并修改了示例。
我决定不给 Player 一个预定义的 ID,而是让 MySql 分配它。
在 MySql 中,我将 Player id 定义为 int,但 Post id 定义为 long。// 我稍后会改变它,但对于这个例子来说它很重要。
但令我震惊的是我的做法,看看第二排。这根本不是优雅的。
现在我的问题是如何以一种不那么荒谬的方式从创建的玩家那里获得 Id 作为 int ?
scala - 异常和枚举字段
我只是想知道如何在带有 Anorm 的案例类中使用枚举文件(类,从枚举扩展)。例如:
如果我尝试这样的代码,我会得到“RuntimeException:没有支持的类型models.User的构造函数”。我应该为此目的使用什么数据库字段类型?我试过没有运气的varchar。
sql - sql列“消失” - 播放框架
我目前正在阅读 play 的 yabe 教程的 scala 版本。yabe 代表另一个博客引擎,自然在教程中的某个时间点需要存储数据。第一个sql演变是这样的:
之后添加帖子和评论表。在 Scala 方面,每个数据库条目都可以映射到一个案例类。它的伴生对象扩展了特性 Magic 并实现了各种辅助函数。问题是由 Post 类的伴随对象中的这段代码引起的。你只需要看一下sql查询:
我承认,尽管我了解代码的作用,但我自己永远不会想出这个。
为了测试代码,运行以下测试:
这个测试完成得很好。Scala 的语法增加了一些复杂性,但您可以清楚地看到对 id 为 1 的用户的测试查询。这个问题出现在这个测试中:
测试失败并显示错误消息:
ColumnNotFound(User.id) 在 /test/Tests.scala 第 41 行: val posts = Post.allWithAuthor
列 id 怎么会这样消失?我没有更改 sql 或 scala 代码中的任何内容。只需交换测试即可将错误“切换”到关闭状态。不知何故这个sql代码
在这个 scala/sql 代码中找不到 id
做。
你能解释一下出了什么问题吗?这是教程的链接http://scala.playframework.org/documentation/scala-0.9.1/guide1
更新:
我读过这个问题: ColumnNotFound problem with Magic in play scala
并在评论之后编辑了查询。sql 本身没有改变,但我将其全部粘贴在一行中:
这是一个奇迹:现在找到了该列。如果查询长于一行,则测试会抱怨奇怪的 ColumnNotFoundError 但使用 oneliner 一切都很好。
怎么会发生这样的事情?
playframework - 如何理解 play2 异常的结果解析器?
这是 play2 内置 zentasks 的示例代码:
请注意字段键:project.id
, project.folder
, project.name
。
部分是什么project
意思?它来自哪里?
看查询方法:
SQL 是select * from project ...
,结果应该是:
不是:
为什么我们应该将键指定为project.???
,而不是field name
直接指定?
play2如何使用该project.
部分?
sql - 即使解析器被标记为可选,播放 Scala Anorm 解析器也会抛出 UnexpectedNullableFound
该表定义如下:
我的查询如下所示:
虽然这Option[String]
在编译时给出了正确的类型 (),但它RuntimeException(UnexpectedNullableFound(SESSION.SOMETHING))
在运行时会导致 a。
作为记录,我使用的是 Play 1.2.4、Play Scala 0.9.1 和捆绑的 H2 数据库。
postgresql - Play2 的异常不能在 postgresql 上运行
我发现play2的异常的行解析器依赖于jdbc驱动返回的元数据。
所以在play提供的内置示例“zentasks”中,我可以找到这样的代码:
请注意,这些字段都有一个project.
前缀。
它适用于 h2 数据库,但不适用于 postgresql。如果我使用 portgresql,我应该把它写成:
我在 play 的 google group 中问过这个问题,Guillaume Bort 说:
是的,如果您使用的是 postgres,这可能是原因。postgresql jdbc 驱动程序损坏并且不返回表名。
如果postgresql的jdbc驱动真的有这个问题,我想anorm会有问题:
如果两个表有同名的字段,我join
用找出哪个名称属于哪个表。
所以我写了一个测试。
1.在postgresql上建表
2. 创建异常模型
3. scalatest 测试用例
4. 输出
您可以看到“a”的名称为“BBB1/BBB2”,但没有“AAA”。
我尝试将带有前缀的解析器重新定义为:
但是会报找不到指定字段的错误。
这是一个很大的异常问题吗?还是我错过了什么?
placeholder - 哪里 ”?” play2 异常中 sql 的占位符
我们可以在 play2 的 anorm 中编写如下 sql:
它使用{xxx}
format 作为占位符,并指定一个 map 'id->id
。有没有?
像我们在 play1 中那样用作占位符?
我希望我可以这样写:
这种格式有时非常有用。
dao - anorm中有很多类似的dao方法,是吗?
我正在使用带有异常的 Play2。我认为 anorm 的精神是编写简单的 sql,背后没有魔法。
但是我很快发现我已经写了很多类似的 dao 方法。例如:
方法都差不多,只是where
子句差别不大。
所以我创建了一个findWhere()
方法:
我可以用行动来称呼它:
它有效,但我不认为它是 anorm 推荐的。
解决这个问题的最佳方法是什么?
sql - 在 play2 中哪里可以看到记录的 sql 语句?
我发现有这样的配置application.conf
:
我已启用它,但我找不到任何记录执行 sqls 的日志文件。
我在哪里可以找到它,或者我错过了什么?