在Play 2框架上配置QueryDSL

4
我尝试在Play框架(使用Java)中配置QueryDSL,但没有成功。我在谷歌上搜索了类似的问题,这是我找到的: 1. QueryDSL和Play。但是这篇文章建立了与Lombok的等价性,而且解决方法对我不起作用。 2. 仿效MAVEN过程。这正是我需要将其应用于其他类似模块的方法,但没有展示如何操作的示例。 3. 配置多个模块。 在这种情况下包括几个模块,有点令人困惑。
那么,我该如何在Play中配置QueryDSL?有人能提供一个操作示例吗?
先行致谢。
1个回答

4
我刚使用了 play-querydsl 并在 Play 2.2.2 中实现了它。我按照说明进行操作(在 plugins.sbt 中使用版本号 0.1.1 而不是 0.1.0),然后生成 Q* 模型类到 target/scala-2.10/src_managed/main/querydsl。由于我使用 Eclipse,所以我运行了 play eclipse 命令将该文件夹包含到类路径中。
我尝试过直接在 Eclipse 中编译 APT 注解,但最终放弃了。
另外,我比较了 QueryDSL 和 EasyCriteria,我发现 EasyCriteria 更易于使用,因为它更接近 Ebean 的用户友好查询方式。但是,如果您需要类型安全,则 QueryDSL 明显优于 JPA 内置的 Criteria API。 plugins.sbt (Play 2.2.2):
// Comment to get more information during initialization
logLevel := Level.Warn

// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.2")

addSbtPlugin("com.code-troopers.play" % "play-querydsl" % "0.1.1")

build.sbt(Play 2.2.2):

name := "project"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq(
  javaJdbc,
  javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
  cache,
  filters,
  "org.hibernate" % "hibernate-entitymanager" % "4.3.5.Final",
  "com.mysema.querydsl" % "querydsl-jpa" % "3.3.4",
  "postgresql" % "postgresql" % "9.1-901-1.jdbc4",
  "org.mindrot" % "jbcrypt" % "0.3m",
  "net.sf.opencsv" % "opencsv" % "2.3"
)     

play.Project.playJavaSettings

playJavaSettings ++ QueryDSLPlugin.queryDSLSettings

val current = project.in(file(".")).configs(QueryDSLPlugin.QueryDSL)

QueryDSLPlugin.queryDSLPackage := "models"

play.Keys.lessEntryPoints <<= baseDirectory { base =>
   (base / "app" / "assets" / "stylesheets" * "*.less")
}

你能分享一下你的 build.sbtplugins.sbt 文件吗? - masterdany88
@masterdany88,我已按要求添加了文件。 - Nathan
谢谢,不幸的是您的配置文件适用于playFramework 2.3,而我正在寻找2.2版本。 - masterdany88
@masterdany88 我更新了我的答案,并加入了一个旧的 Play 2.2.2 项目中的文件。希望它们能对你有所帮助。 - Nathan
谢谢您的帮助。现在它可以工作了 :D 您救了我的一天。我已经处理了4天了。 - masterdany88
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接