3

我使用 QueryDSL 和 JPA2 有一段时间了,它是我所知道的最强大的 ORM 组合。JPA Criteria API 是一场灾难。使用 QueryDSL,我也忘记了 JPQL。

我想在 Play 中使用 QueryDSL!除了 JPQL 的内联部分作为字符串之外,Play 中的所有内容看起来都非常好。它让我想起了 CakePHP ......

我想在 Play 中使用防重构查询语言(以及其他一些东西 :))。

QueryDSL 的使用很简单。它只需要 EntityManager。但是 QueryDSL 有这个 APT 类生成器(就像来自 Hibernate 的 citeria API 一样)。

有没有人设法让这个类生成器与 Play 一起工作?是否可以重新创建和热重新加载这些类?

4

4 回答 4

3

我认为Project Lombok在Play框架中进行注解处理的经验会对你有所帮助。设置 APT 处理很容易,但非常具体。查看play-lombok 模块。不要忽略 commands.py 文件并更改 org.eclipse.jdt.core-3.6.0.jar 引用以匹配您的 Play 版本中使用的版本。

我在 Play 框架中为我最近的所有项目使用 Querydsl。但是,我不使用 JPA。我将自己的对象模型与 Querydsl 一起使用,而不是 ORM,以根据情况获得良好的拟合。我不需要带有 Querydsl 的 APT。

我没有在 Play 和 Querydsl 之间创建任何紧密集成,但我只是在每个控制器方法中使用了一些样板。总有一天我会写一个合适的插件。

于 2011-09-21T20:12:08.413 回答
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 -> *           

然后在eclipse中使用并重新打开项目,它应该可以play dependencies --sync工作play eclipsify

于 2011-10-22T11:58:56.610 回答
1

我没有玩游戏的经验,但我知道以下设法将 Querydsl SQL 与 Play 框架一起使用:http: //twitter.com/# !/rrmckinley

他也许能帮助你。我不知道 Querydsl 与 Play 的任何其他集成。

于 2011-09-21T19:04:58.673 回答
0

您可以检查更改数据库适配器的现有模块(例如Mongo 的这个模块)并执行类似于链接 QueryDSL 的操作。如果它是一个模块,它应该可以使用热重载。

于 2011-09-22T13:21:21.917 回答