IntelliJ 无法识别 JPA 静态元模型

Ama*_*har 6 jpa intellij-idea metamodel jpa-2.0 jhipster

我使用 JHipster 和 Gradle 作为构建工具生成了应用程序。

当我创建实体时,我添加了过滤支持,从而生成了 JPA 静态元模型。但是 IntelliJ 无法识别元模型。

我在 IntelliJ 上启用了注释处理器设置,但它似乎不起作用。

我必须更改哪些设置才能让 IntelliJ 识别 JPA 静态元模型?

Tho*_*sen 8

默认情况下,元模型类会生成到该/target/generated-sources/annotations文件夹​​中。该文件夹似乎未注册为源文件夹。

您可以在 IDE 中手动更改它,或者如果您使用 Maven 构建,则可以通过将以下插件添加到构建配置来自动完成此操作:

<project>
    ...

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>target/generated-sources/annotations</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    ...
</project>
Run Code Online (Sandbox Code Playgroud)

我在我的 Hibernate Tips 之一中对此进行了更详细的解释。

  • 我正在使用问题中明确提到的 gradle 。 (3认同)

小智 8

我不被允许发表评论,但我想补充托尔本·詹森的答案。除了插件配置之外,我还必须将其添加到项目的依赖项中:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <version>5.4.21.Final</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

这就是在 target/ generated-sources/annotations 路径中生成源的内容。

所以pom最终是这样的:

    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <version>5.4.21.Final</version>
        </dependency>
        ...
    </dependencies>

    ...

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sources>
                                <source>target/generated-sources/annotations</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        ...
    </build>

Run Code Online (Sandbox Code Playgroud)


Ama*_*har 5

为了让 IntelliJ IDEA 识别生成的类,我必须在 build.gradle

sourceSets {
    main.java.srcDirs += 'build/generated/source/apt/main'
}
Run Code Online (Sandbox Code Playgroud)

更新

更好的解决办法是修改IntelliJ Plugin

idea {
    module {
        sourceDirs += file("build/generated/source/apt/main")
        generatedSourceDirs += file("build/generated/source/apt/main")
    }
}
Run Code Online (Sandbox Code Playgroud)