【发布时间】:2019-12-09 01:47:10
【问题描述】:
当我运行节点时,控制台会打印出这种警告:MappedSchemas DealSchemaV1 和 CompanySchemaV1 之间的交叉引用。 MappedSchema DealSchemaV1 entity PersistentDealState field sender 是在另一个 MappedSchema CompanySchemaV1 中定义的 PersistentCompany 类型。这可能会在演变 MappedSchema 或迁移其数据时导致问题,请确保 JPA 实体在相同的封闭 MappedSchema 中定义。
如果我遵循警告建议并将所有实体放在一个 SchemaV1 中,那么一个架构中将会有数百个实体,这很糟糕。
解决此警告的最佳做法是什么?
object CompanySchema
object CompanySchemaV1 : MappedSchema(
schemaFamily = CompanySchema.javaClass,
version = 1,
mappedTypes = listOf(...)
) {
@Embeddable
class PersistentCompany(
...
)
...
}
object DealSchema
object DealSchemaV1 : MappedSchema(
schemaFamily = DealSchema.javaClass,
version = 1,
mappedTypes = listOf(...)
) {
@Entity
@Table(...)
class PersistentDealState(
@Embedded
var sender: CompanySchemaV1.PersistentCompany?,
...
)
...
}
【问题讨论】: