xodus - 实体的元数据未定义
问题描述
我正在尝试将两个实体与n:m
关系、乐队和事件联系起来。当一个事件被删除时,乐队应该保留。然而,在活动的一部分期间,乐队可能不会被移除。
附加的测试用例失败并显示以下日志:
2020-03-02 21:54:32.583 [Test worker] DEBUG c.j.t.dnq.database.ConstraintsUtil - Cannot check links cardinality for entity XdEvent: id = 0-0. Entity metadata for its type [XdEvent] is undefined
2020-03-02 21:54:32.583 [Test worker] DEBUG c.j.t.dnq.database.ConstraintsUtil - Cannot check links cardinality for entity XdBand: id = 1-0. Entity metadata for its type [XdBand] is undefined
似乎问题是缺少实体元数据,但我找不到任何相关文档或类似问题。有谁知道修复?
实体
class XdBand(entity: Entity) : XdEntity(entity) {
companion object : XdNaturalEntityType<XdBand>()
var name by xdRequiredStringProp(unique = true)
var image by xdBlobProp()
val events: XdMutableQuery<XdEvent> by xdLink0_N(XdEvent::bands, onDelete = OnDeletePolicy.FAIL)
}
class XdEvent(entity: Entity) : XdEntity(entity) {
companion object : XdNaturalEntityType<XdEvent>()
var date by xdRequiredDateTimeProp()
/**
* Milliseconds since midnight
*/
var startTime by xdIntProp()
/**
* Milliseconds since midnight
*/
var endTime by xdIntProp()
val bands : XdMutableQuery<XdBand> by xdLink1_N(XdBand::events, onDelete = OnDeletePolicy.CLEAR)
}
测试用例
@Test(expected = ConstraintsValidationException::class)
fun testCannotRemoveBandWithEvent() {
val bandName = "Some Band"
Database.store.transactional {
val event = XdEvent.new {
date = LocalDate.now().toDateTime(LocalTime.MIDNIGHT)
startTime = 0
endTime = 0
}
XdBand.new {
name = bandName
events.add(event)
}
}
Database.store.transactional {
XdBand.all().first().delete()
}
}
解决方案
您需要在 XdModel 中注册此类型,然后将此类型传播到存储:
XdModel.registerNodes(XdBand, XdEvent)
initMetaData(XdModel.hierarchy, store)
XdModel#registerNodes
您可以使用XdModel#scanPackages
方法而不是XdModel#scanJavaClasspath
方法来查找所有可用类型。
推荐阅读
- python - “Player2”无法与“player”做同样的事情
- angular - 离子无效包名__ngcc_entry_points__.json
- python-3.x - uwsgi 协议——HTTP POST 请求正文的 python 代码
- kubernetes - 在 k8s 上启用服务拓扑
- jenkins - 与 Jenkins 一起使用时的柯南本地缓存
- python - 用正则表达式匹配结构
- javascript - 如何选择动态生成的元素
- php - 两个变量的比较,CodeIgniter
- python - 为什么附加到文本文件时最后一行重复?
- symfony - 警告:非法字符串偏移 'city' Symfony 表单搜索