Question

I try to configure QueryDSL in Play Framework (with Java) but without success. I've searched for similar problems in Google and this is what I found:

1. QueryDSL and Play. But this post establishing the equivalence with Lombok and the solution does not work for me.

2. Emulating MAVEN process. This is what I really need to apply it to other similar modules, but does not show an example of how.

3. Configure multiple modules. In this case includes several modules and is a bit confusing.

So, how I could configure QueryDSL in Play? Anybody could include an example of how to do?

Thanks in advance.

Was it helpful?

Solution

I just got it working using play-querydsl with Play 2.2.2. I followed the instructions (using 0.1.1 as the version number in plugins.sbt instead of 0.1.0) and it generated the Q* model classes to target/scala-2.10/src_managed/main/querydsl. I use Eclipse, so I ran play eclipse to include this folder in the classpath.

I tried to get the APT annotation compiling to work directly in Eclipse but gave up on that.

As a side note, I compared QueryDSL and EasyCriteria and I found EasyCriteria easier to use because it more closely mirrors the user-friendly queries of Ebean. However, if you want type safety, QueryDSL is definitely better than JPA's built-in 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")
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top