【问题标题】:QueryDsl, combining standard JPA and Hibernate's - class level @Where annotations?QueryDsl,结合标准 JPA 和 Hibernate 的 - 类级别 @Where 注释?
【发布时间】:2013-04-15 09:07:47
【问题描述】:

我想知道是否可以将休眠注释,特别是那些类级别的注释与 QueryDsl 中的标准 JPA 注释结合起来。就这样……

 @javax.persistence.Entity
 @org.hibernate.annotations.Where(clause="someProperty = (SELECT ....)")
 @javax.persistence.Table(name="anyname")
 public class SomeClass {...
 }

目前我们只使用 JPA 注释,但我们还必须合并一些 hibernate 注释。

在apt插件配置中用“HibernateAnnotationProcessor”替换“JPAAnnotationProcessor”是否安全? *)

        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.0.8</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/java</outputDirectory>
                          <processor>com.mysema.query.apt.hibernate.HibernateAnnotationProcessor</processor>
                        <sourceDirectory>src/gen/java</sourceDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

*) 但是,在将注释处理器替换为“HibernateAnnotationProcessor”之后,我没有注意到生成的 JPA 查询有任何变化。是因为我仍在使用显然不承认任何休眠细节的 JPA?

  JPAQuery query = new JPAQuery (this.emf.createEntityManager());

我是否也需要切换到 Hibernate Session?

【问题讨论】:

  • 您是否记录了生成的 SQL 查询并验证未应用注入的 where 过滤器?

标签: java hibernate jpa annotations querydsl


【解决方案1】:

Querydsl 使用HibernateAnnotationProcessor 只是为了确定字段和/或方法中是否存在相关注释。

如果仅对字段进行注释,则将它们用作属性,如果仅对 getter 进行注释,则使用它们。如果两者都使用,getter info 会覆盖字段信息。

对于类级别注释,如果您的类主要使用 JPA 注释进行注释,则使用一个处理器或另一个处理器没有区别。

使用的注解处理器不会影响您的实体类型在 JPAQuery 中的处理方式。

【讨论】:

  • Tx Timo.. 只是为了澄清我的问题。所有类都使用两种注释方言(JPA 和 Hibernate)进行注释。 Hibernate 注释可以发生在两个级别,方法级别和类级别。所以严格来说,我的类“不是主要”用 JPA 注释进行注释的。我在类级别确实有带有 Hibernate 注释的类。
  • 好的,但是您使用 JPA Entity 和 MappedSuperclass 注释将类标记为实体,这就是我的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 2019-05-31
  • 2015-03-12
  • 2011-12-07
相关资源
最近更新 更多