【发布时间】:2021-11-03 20:24:28
【问题描述】:
您好,我正在尝试在 Kotlin 中使用 Micronaut Data 启动一个项目,并且正在尝试建立一个简单的表关系。但是我在使用 micronaut 注释时遇到了麻烦。 父实体和子实体如下:
import io.micronaut.data.annotation.GeneratedValue
import io.micronaut.data.annotation.Id
import io.micronaut.data.annotation.MappedEntity
import io.micronaut.data.annotation.Relation
@MappedEntity
class Parent(
@Id
@GeneratedValue
var id: Long?,
var name: String?,
@Relation(value = Relation.Kind.ONE_TO_MANY, mappedBy = "parent")
val children: Set<Child>?
){
}
import io.micronaut.data.annotation.GeneratedValue
import io.micronaut.data.annotation.Id
import io.micronaut.data.annotation.MappedEntity
import io.micronaut.data.annotation.Relation
@MappedEntity
class Child(
@Id
@GeneratedValue
var id: Long?,
var name: String?,
@Relation(value = Relation.Kind.MANY_TO_ONE)
var parent: Parent?
){
}
我的错误如下:
io.micronaut.context.exceptions.BeanInstantiationException: Bean definition [io.micronaut.data.jdbc.config.SchemaGenerator] could not be loaded: Error instantiating bean of type [io.micronaut.data.jdbc.config.SchemaGenerator]: Identity cannot be missing for: de.mphoenix.data.entities.Parent
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1939)
at io.micronaut.context.DefaultApplicationContext.initializeContext(DefaultApplicationContext.java:236)
at io.micronaut.context.DefaultBeanContext.readAllBeanDefinitionClasses(DefaultBeanContext.java:3454)
at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:330)
at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:182)
at io.micronaut.runtime.Micronaut.start(Micronaut.java:72)
at de.mphoenix.ApplicationKt.main(Application.kt:8)
Caused by: io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [io.micronaut.data.jdbc.config.SchemaGenerator]: Identity cannot be missing for: de.mphoenix.data.entities.Parent
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2366)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:3282)
at io.micronaut.context.DefaultBeanContext.loadContextScopeBean(DefaultBeanContext.java:2665)
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1933)
... 6 common frames omitted
Caused by: java.lang.IllegalStateException: Identity cannot be missing for: de.mphoenix.data.entities.Parent
at io.micronaut.data.model.query.builder.AbstractSqlLikeQueryBuilder.traversePersistentProperties(AbstractSqlLikeQueryBuilder.java:1341)
at io.micronaut.data.model.query.builder.AbstractSqlLikeQueryBuilder.traversePersistentProperties(AbstractSqlLikeQueryBuilder.java:1278)
at io.micronaut.data.model.query.builder.sql.SqlQueryBuilder.buildCreateTableStatements(SqlQueryBuilder.java:448)
at io.micronaut.data.jdbc.config.SchemaGenerator.createSchema(SchemaGenerator.java:145)
at io.micronaut.data.jdbc.config.$SchemaGenerator$Definition.initialize(Unknown Source)
at io.micronaut.data.jdbc.config.$SchemaGenerator$Definition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2337)
... 9 common frames omitted
如果我删除构造函数中的关系参数,一切都很好,所以关系肯定有问题,但我无法理解它。有人可以帮忙吗?
【问题讨论】:
-
您能否添加您的项目依赖项(gradle / maven...)并描述您如何构建和运行您的应用程序?
标签: kotlin micronaut micronaut-data