如何让 Squeryl 与 Play 一起使用!框架?

2024-07-03

我正在尝试学习如何使用 Play 和 Squeryl 制作一个简单的数据库应用程序。我已经根据 Play 教程制作了任务应用程序,但我想更改模型/架构,以便它使用 Squeryl 而不是 Anorm。我一直在寻找不同的教程 http://squeryl.org/getting-started.html、示例和answers https://stackoverflow.com/a/9706308/1390113,但我还没有真正弄清楚如何做到这一点。

因此,鉴于源代码来自播放教程(ScalaTodoList) http://www.playframework.org/documentation/2.0.1/ScalaTodoList;我该如何继续使其与 Squeryl 一起工作?

进一步来说:

  • 我如何实施all(), create(), and delete()我的模型中的方法? (我想对任务使用自动递增 ID)
  • 当前使用哪个数据库适配器是硬编码的Build.scala and Global.scala(见下文)。我怎样才能让它自动使用 H2 进行开发/测试并在 Heroku 上使用 Postgres,就像 Play 教程中的 Anorm 一样?
  • 如何确保它自动创建我的表?

这就是我到目前为止所做的

我已经完成了 Play ScalaTodoList 教程。

In project/Build.scala, object ApplicationBuild,我添加了依赖项:

// From the "Squeryl Getting Started tutorial"
val posgresDriver = "postgresql" % "postgresql" % "8.4-702.jdbc4"
val h2 = "com.h2database" % "h2" % "1.2.127"

// From the "Squeryl Getting Started tutorial"
libraryDependencies ++= Seq(
  "org.squeryl" %% "squeryl" % "0.9.5",
  h2
)

// From the Play tutorial
val appDependencies = Seq(
  // Add your project dependencies here,
  "org.squeryl" %% "squeryl" % "0.9.5", // Copied from above so that it compiles (?)
  "postgresql" % "postgresql" % "8.4-702.jdbc4"
)

added app/Global.scala(取自所以答案 https://stackoverflow.com/a/9706308/1390113上面提到,只是将适配器更改为H2):

import play.db.DB
import play.api.Application
import play.api.GlobalSettings
import org.squeryl._
import org.squeryl.adapters._

object Global extends GlobalSettings {

  override def onStart(app: Application): Unit =
  {
    SessionFactory.concreteFactory = Some(
      () => Session.create(DB.getDataSource().getConnection(),
        dbAdapter));
  }

  override def onStop(app: Application): Unit =
  {
  }

  val dbAdapter = new H2Adapter(); // Hard coded. Not good.

  }

in app/models/Task.scala我添加了导入并删除了 Anorm 实现all(), create(), and delete()。 Play 教程中的控制器期望all()返回方法List[Task].

import org.squeryl.PrimitiveTypeMode._
import org.squeryl.Schema
import org.squeryl.annotations.Column

case class Task(id: Long, label: String)

object Task extends Schema {
  val tasks = table[Task] // Inspired by Squeryl tutorial

  def all(): List[Task] = {
          List[Task]() // ??
  }

  def create(label: String) {
// ??
  }

  def delete(id: Long) {
// ??
  }
}

其余文件保留在 Play 教程末尾的位置。


以下是使用 Squeryl 的 Play 2 项目示例:
https://github.com/jamesward/play2bars/tree/scala-squeryl https://github.com/jamesward/play2bars/tree/scala-squeryl

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

如何让 Squeryl 与 Play 一起使用!框架? 的相关文章

随机推荐

  • 使用 Excel VBA 宏查找并替换 Word 中的页脚文本

    我正在尝试做一个macro in Excel这会打开一个Word文档 找到一个指定的文本 它在里面footer在 Word 文档中 并将其替换为文本 目前 我的宏打开了单词文档 但我不知道如何进入页脚并找到这些文本 Dim objWord
  • 启用 iTunes 文件共享时隐藏 Core Data sqlite 文件

    我在我的应用程序中使用 iTunes 文件共享 并且需要将 Core Data sqlite 数据库放在其他地方 以便用户不会摆弄它 我读过了以前的SO帖子 https stackoverflow com questions 2942855
  • 使用RestKit执行同步请求

    BOOL do a Restkit request and return a boolean manager postObject nil path mypath parameters password password success R
  • 令牌感知 Astyanax 连接池在节点上连接,无需在节点上分配连接

    我使用 astyanax 连接池定义如下 ipSeeds LOAD BALANCER HOST 9160 conPool setSeeds ipSeeds setDiscoveryType NodeDiscoveryType TOKEN A
  • 在 python pandas 中搜索 Dataframe 整行的多个字符串值

    在 pandas 数据框中 我想逐行搜索多个字符串值 如果该行包含字符串值 则该函数将根据 df 1 或 0 将该行添加 打印到 df 末尾的空列中有多个教程介绍如何选择 Pandas DataFrame 中与 部分 字符串匹配的行 例如
  • React,获取组件内绑定的父dom元素名称

    在我的组件中 如何访问它嵌套在其中的父组件的名称 所以如果我的渲染是这样的 ReactDOM render
  • 如何进入各个目录并执行命令?

    如何编写一个 bash 脚本来遍历 Parent directory 中的每个目录并executes a command in 每个目录 目录结构如下 parent directory 名称可以是任何内容 不遵循模式 001 directo
  • Mac OS X 上的弱符号链接

    目前 我在使用 Xcode 4 0 2 的 Mac OS X 10 6 7 上遇到了弱链接问题 gcc version i686 apple darwin10 gcc 4 2 1 GCC 4 2 1 Apple Inc build 5666
  • 为什么 TypeScript 无法识别 Vue 插件的模块增强?

    我正在构建一个 Vue 项目来学习 Vue 和 TypeScript 该项目有一大块静态数据 我选择将其作为 Vue 插件提供给组件 从而向 Vue 原型添加属性 import Vue from vue export default fun
  • 嵌套函数内间隔上的多个 CASE 语句

    虽然我已经想出了一个使用多个的解决方法if else if声明 我很想知道我的case声明 如下图所示 function ar vo bucket revEng v s solve solve gt 0 sqrt T ar vo s buc
  • 为什么Java String 实现中存在偏移量?

    我一直在研究实现 但不明白为什么会有偏移 我认为这很重要 我正在学习 Sedgewick 教授的算法课程 我们现在正在讨论字符串 在讲座中 他简要讨论了 String 的实现 但他没有详细说明为什么会有偏移 注意 如果讲座不是在线的 我肯定
  • RFC2898DeriveBytes 如何生成 AES 密钥?

    我看到一些代码像 string password 11111111 byte salt Encoding ASCII GetBytes 22222222 Rfc2898DeriveBytes key new Rfc2898DeriveByt
  • 不带参数的 getter 的 WSDL 类型

    我尝试编写一个 wsdl 文件 我首先在元素中定义我未来的运营 所以我需要定义一个像 getAllObjects 这样的方法 这就是为什么我不需要为 getAllObjectsRequest 设置任何参数 谁能告诉我如何为未声明任何输入参数
  • UIApplication.delegate 必须仅在主线程中使用[重复]

    这个问题在这里已经有答案了 我的应用程序委托中有以下代码 作为在其他 viewController 中使用 CoreData 的快捷方式 let ad UIApplication shared delegate as AppDelegate
  • 保存模式后立即替换数字

    搜索到的模式看起来像text9 我寻找 text 9 我想替换为 15这样我就能得到text5但它只是给了我text 除数字外 任何其他字符都有效 事实证明 PCRE 风格的反向引用不起作用 所以 你必须使用 015替换为第一个捕获组捕获的
  • AOP Spring @AfterReturning 未按预期工作

    我正在学习 AOP spring 并尝试一些例子 关于 AfterReturning 我所理解的是 仅当目标成功返回并且与切入点匹配时才会调用该方法 然而 在我的例子中 如下所示 我有一个切入点 它定义了仅返回字符串的所有方法 但它调用了所
  • 如何将 JavaPairRDD 转换为数据集?

    SparkSession createDataset 只允许List RDD or Seq 但不支持JavaPairRDD 所以如果我有一个JavaPairRDD
  • Tomcat 中连接的唯一标识符

    我想为与 Tomcat 建立的每个连接获取唯一标识符 我不是在谈论会话或用户 客户端 的唯一性 而是在谈论每个连接 假设客户端 A 发送一个 GET 然后发送另一个 在我的场景中 这是两个独立且独特的连接 Tomcat 中是否有任何变量或东
  • Python3导入相对或绝对的正确方法?

    我正在写一个 python 模块神经网络 它在 Python2 中运行良好 但在 Python3 中导入失败 这是我的代码结构 neuralnet init py train py A wrapper to train does not d
  • 如何让 Squeryl 与 Play 一起使用!框架?

    我正在尝试学习如何使用 Play 和 Squeryl 制作一个简单的数据库应用程序 我已经根据 Play 教程制作了任务应用程序 但我想更改模型 架构 以便它使用 Squeryl 而不是 Anorm 我一直在寻找不同的教程 http squ