当前位置: 首页 > 知识库问答 >
问题:

如何使用gradle在spring boot中生成JPA元模型?(龙目岛)

梁豪
2023-03-14

我想将JPA元模型添加到我的项目-Spring boot gradle

我发现很多例子我怎么能做到这一点,但都与Maven。另外我发现这个网站:https://plugins.gradle.org/search?term=metamodel

尝试前三个插件。每个插件我得到错误:错误:不能找到符号在类标记为lombok@Builder注释和一些类不是实体。它是一些插件的例子:

    buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.github.iboyko.gradle.plugins:jpamodelgen-plugin:1.0.1"
    }
 }

    dependencies {
        compile ('org.hibernate:hibernate-jpamodelgen')
    }

1) 在Spring引导Spring数据JPA gradle中,哪个插件或方法是创建JPA元模型最正式(正确的)?

2)如何仅指定具有实体的包而不扫描其他类?

3) 如何使用lombok与it交朋友?

编辑

我将此代码添加到gradle文件:

sourceSets.configureEach { sourceSet ->
    tasks.named(sourceSet.compileJavaTaskName).configure {
        options.annotationProcessorGeneratedSourcesDirectory = file("$buildDir/generated/sources/java")
    }
}

它生成精细。在那之后,我做标记

generated/sources/java 

生成类的文件夹根目录(rigth clik到此文件夹并标记为)

之后,我尝试在我的存储库中导入生成的类,IDE显示:

对于每个模块,我有两个模块-my_modulemy_module_main(我不明白为什么),所有的类都在my_module中生成,但所有的代码都在my_module_main中。如果我添加这个依赖项-我有这个:

共有2个答案

齐昊苍
2023-03-14

您是否使用Spring Initazr生成项目?

这是您从Initializer获得的(除了我自己添加的jpamodelgen):

buildscript {
    ext {
        springBootVersion = '2.1.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-data-jpa')
    runtime('com.h2database:h2')
    compileOnly('org.projectlombok:lombok')
    compileOnly ('org.hibernate:hibernate-jpamodelgen')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

// Add source set to define where the generated source code should go to
sourceSets.configureEach { sourceSet ->
    tasks.named(sourceSet.compileJavaTaskName).configure {
        options.annotationProcessorGeneratedSourcesDirectory = file("$buildDir/generated/sources/java")
    }
}

您可以在GitHub上找到一个演示项目:

https://github.com/simasch/demo-gradle-jpa

在IntelliJ中,您可以右键单击generated/sources/java并选择

花飞尘
2023-03-14

我也在努力解决同样的问题。最后,我通过在编译唯一和注释处理器表单中添加两个依赖项来实现它。不要问我为什么,但它不知何故起作用了。

compileOnly 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
compileOnly 'org.hibernate:hibernate-jpamodelgen'
annotationProcessor('org.hibernate:hibernate-jpamodelgen')
 类似资料:
  • 以下是我在pom中的相关配置.xml: 提前感谢您的帮助。

  • 问题内容: 本着与CriteriaQuery关联的类型安全的精神,JPA 2.0还具有一个API,用于支持实体的元模型表示。 是否有人知道此API的完整功能实现(生成元模型,而不是手动创建元模型类)?如果有人也知道在Eclipse中进行设置的步骤,那将是非常棒的(我认为这与设置注释处理器一样简单,但你永远不会知道)。 编辑:偶然发现了Hibernate JPA 2元模型生成器。但是问题仍然存在,因

  • 问题内容: 本着与CriteriaQuery关联的类型安全的精神,JPA 2.0还具有一个API,用于支持实体的元模型表示。 是否有人知道此API的完整功能实现(生成元模型,而不是手动创建元模型类)?如果有人也知道在Eclipse中进行设置的步骤,那将是非常棒的(我认为它与设置注释处理器一样简单,但您永远不会知道)。 编辑:偶然发现了HibernateJPA2元模型生成器。但是问题仍然存在,因为我

  • 在我的pom里。xml,我添加了这个依赖项: 当我通过在终端执行“mvn clean install”编译并安装项目时,模型类在以下目录中生成: 然后,如果我从Eclipse导入这个Maven项目,它可以很好地工作,而不会抱怨自动生成的模型类。 但是,如果我不在终端执行“mvn清洁安装”来生成模型类并直接导入清洁项目,Eclipse就不会生成模型类,因此会生成编译错误。 在导入和编译干净的mave

  • 我有2个文件,一个ecore实现元模型和一个电子存储库。电子存储库以EMF格式与ecore实现元模型一起提供。我想浏览这个存储库的内容,我所知道的是我必须从实现元模型生成一个Eclipse插件,通过这个插件,我可以打开存储库并浏览它的内容。但我不知道如何生成插件并继续它。 ecore实现元模型是使用Eclipse Indigo SR2中的EMF版本2.7开发的,e-Repository是在相同的环

  • 我使用的是java 8、spring boot 2.0.0、spring data jpa(spring boot starter data jpa)、gradle和intellij。我一直在尝试使用JPA元模型,但很难找到如何配置。 实体类的元模型不仅仅是生成的。 我猜到它会很简单,但现在看来,这可能是错误的。我该如何使用它?