我正在使用带有JPA2的QueryDSL一段时间,它是我所知道的ORM最强大的组合。 JPA Criteria API是一场灾难。使用QueryDSL我也忘记了JPQL。
我想在Play中使用QueryDSL!除了JPQL的内联部分作为字符串之外,Play中的一切看起来都非常好。它让我想起了CakePHP ......
我想在Play(以及其他一些东西:)中使用重构证明查询语言。)
QueryDSL用法很简单。它只需要EntityManager。 但是QueryDSL有这个APT类生成器(就像Hibernate中的citeria API一样)。
有没有人设法让这个类生成器与Play一起工作?是否可以重新创建并热重新加载这些类?
答案 0 :(得分:3)
我认为Play框架中带注释处理的experience的Project Lombok对您有所帮助。设置APT处理很容易,但非常具体。看看play-lombok module。不要忽略commands.py文件并更改org.eclipse.jdt.core-3.6.0.jar引用以匹配您的Play版本中使用的版本。
我在Play框架中使用Querydsl来处理我最近的所有项目。但是,我没有使用JPA。我使用自己的对象模型与Querydsl而不是ORM来根据情况获得良好的适应性。我并不需要使用Querydsl进行APT。
我没有在Play和Querydsl之间创建任何紧密集成,但我只是在每个控制器方法中使用了一些样板。有一天我会写一个合适的插件。
答案 1 :(得分:2)
我正在使用eclipse运行querydsl。 (见http://blog.mysema.com/2010/10/using-querydsl-in-eclipse.html)
作为生成的源目录,我使用了app /,这意味着Q类将在与模型类相同的目录中生成,这不是最佳的但是有效。
将这些行添加到dependencies.yml
- com.mysema.querydsl -> querydsl-jpa 2.2.3
- com.mysema.querydsl -> querydsl-apt 2.2.3
- log4j -> log4j 1.2.16
- javassist -> javassist 3.12.1.GA
repositories:
- queryDSL:
type: iBiblio
root: "http://source.mysema.com/maven2/releases/"
contains:
- com.mysema -> *
然后使用play dependencies --sync
和play eclipsify
并在eclipse中重新打开项目,它应该可以正常工作
答案 2 :(得分:1)
我没有使用Play的经验,但我知道以下设法使用Querydsl SQL和Play框架:http://twitter.com/#!/rrmckinley
他或许可以帮助你。我不知道Querydsl与Play的任何其他整合。
答案 3 :(得分:0)
您可以检查更改数据库适配器的现有模块(如Mongo的this one),并执行与链接QueryDSL类似的操作。如果它是一个模块,应该可以使用热重载。