我将kotlin和java与spring boot一起使用来开发我的项目。
我的构建工具是gradle,任务定义如下:
configurations {
providedRuntime
jpametamodel
}
dependencies {
jpametamodel ('org.hibernate:hibernate-jpamodelgen:4.3.11.Final')
}
task generateMetaModel(type: JavaCompile, group: 'build', description: 'metamodel generate') {
source = sourceSets.main.java
classpath = configurations.compile + configurations.jpametamodel
options.compilerArgs = ["-proc:only"]
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
doFirst {
delete(sourceSets.generated.java.srcDirs)
}
}
该任务与kotlin类无关,但是如果我添加kotlin类,则该任务将无法抛出以下错误:
Hibernate JPA 2 Static-Metamodel Generator 4.3.11.Final
/.../src/main/java/com/app/web/rest/UserResource.java:18:
Cannot find .....
import com.app.web.rest.dto.SimpleUser;
^
Symbol: Class SimpleUser
Position: Package com.app.web.rest.dto
SimpleUser在kotlin文件中定义:
SimpleUser.kt
data class SimpleUser(val str:String)
最佳答案
Hibernate元模型生成器实现为JSR 269注释处理器。使用Kotlin时,您需要通过applying the kapt compiler plugin显式启用注释处理。当您这样做时,您会发现为Kotlin实体生成了元模型。