Hibernate.org社区文档

第 2 章 使用

2.1. 从命令行使用
2.1.1. 与 Ant 一起使用
2.1.2. 与 Maven 一起使用
2.2. 在 IDE 中使用
2.2.1. Idea
2.2.2. Eclipse
2.2.3. NetBeans
2.3. 处理器特定选项

注释处理器的 jar 文件可以在 JBoss Maven 存储库 中找到,使用 示例 2.1,“Maven 依赖”.

示例 2.1. Maven 依赖


<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
    <version>1.0.0</version>
</dependency>

或者,可以从 SourceForge 下载完整的发行版包。

在大多数情况下,只要将处理器 jar 添加到类路径并使用 JDK 6,注释处理器就会自动运行。这是由于 Java 的服务提供商 契约以及 Hibernate 静态元模型生成器 jar 文件在 META-INF/services 目录中包含文件 javax.annotation.processing.Processor 的事实。处理器的完全限定名称为:org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor

注意

使用 Java 6 编译器是先决条件。

有几种方法可以将注释处理器作为 Maven 构建的一部分运行。同样,如果您使用的是 JDK 6 编译器并且注释处理器 jar 在类路径中,它将自动运行。如果您在类路径中有多个注释处理器,您可以将处理器选项显式传递给编译器插件


maven-compiler-plugin 方法的缺点是,maven 编译器插件目前不允许指定多个编译器参数(MCOMPILER-62)以及来自 Messenger API 的消息被抑制(MCOMPILER-66)。更好的方法是为编译器插件禁用注释处理,如 示例 2.4,“Maven 编译器插件配置 - 间接执行” 所示。


禁用后,可以使用 maven-processor-plugin 进行注释处理。配置可以在 示例 2.5,“使用 maven-processor-plugin 进行配置” 中看到。


当然,您也希望在您喜欢的 IDE 中使用注释处理。以下各段和屏幕截图将向您展示如何在您的 IDE 中启用 Hibernate 静态元模型生成器。

Hibernate 静态元模型生成器接受一系列自定义选项,这些选项可以以 -A[property]=[value] 的格式传递给处理器。支持的属性为

表 2.1. 注释处理器选项(通过 -A[property]=[value] 传递)

选项名称选项值和用法
debug如果设置为 true,处理器将输出额外的跟踪信息
persistenceXml默认情况下,处理器在 /META-INF 中查找 persistence.xml。指定此选项可以指定来自不同位置的 persitence.xml 文件(必须在类路径中)
ormXml允许指定额外的实体映射文件。为此选项指定的 value 是映射文件名以逗号分隔的字符串。即使指定了此选项,/META-INF/orm.xml 也是隐式的。
lazyXmlParsing可能的值为 truefalse。如果设置为 true,注释处理器将尝试确定任何 xml 文件在调用之间是否已更改,如果未更改,则跳过 xml 解析。此功能是实验性的,在混合模式配置的某些情况下存在产生错误结果的风险。为了确定文件是否已修改,使用了一个临时文件 Hibernate-Static-Metamodel-Generator.tmp。该文件将在 java.io.tmpdir 目录中创建。
fullyAnnotationConfigured如果设置为 true,处理器将忽略 orm.xmlpersistence.xml.
addGeneratedAnnotation如果设置为 true,处理器将添加 @Generated 到生成的 Java 源文件中。使用 JDK 5 添加此注释会导致编译错误。在这种情况下,将标志设置为 false。此选项的默认值为 true
addGenerationDate如果设置为 true,元模型类的生成日期将插入到 @Generated 注释的日期参数中。默认值为 false。如果 addGeneratedAnnotation 设置为 false,则会忽略此参数。
addSuppressWarningsAnnotation如果设置为 true,处理器将添加 @SuppressWarnings("all") 到生成的 Java 源文件中。默认情况下,此注释不会生成。另请参阅 METAGEN-50