首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在地图中使用JaVers?

如何在地图中使用JaVers?
EN

Stack Overflow用户
提问于 2021-04-01 18:28:37
回答 1查看 104关注 0票数 0

我有两个地图,可以由不同的作者修改。在这个特定的用例中,我有一个限制,不能使用POJO或域对象,只能使用Maps。

代码语言:javascript
复制
    @Test
    fun `Shadow from a map`() {
        val javers = JaversBuilder.javers().build()
        val exercise = mutableMapOf("_id" to "1", "title" to "my exercise", "starred" to false)
        javers.commit("bob", exercise)
        
        exercise["starred"] = true
        javers.commit("bob", exercise)
        
        exercise["title"] = "my great exercise"
        exercise["starred"] = true
        javers.commit("alice", exercise)

        val training = mutableMapOf("_id" to "2", "title" to "my training")
        javers.commit("alice", training)
        
        training["title"] = "my great training"
        javers.commit("jack", training)


        val query: JqlQuery = QueryBuilder.byInstance(exercise).build()
        val shadows: List<Shadow<Map<*,*>>> = javers.findShadows(query)
        assertThat(shadows.size, `is`(3))
    }

测试执行显示以下错误:

代码语言:javascript
复制
MALFORMED_JQL: Invalid JQL query, object passed to byInstance(Object) query should be instance of Entity or ValueObject, got MapType{ baseType: 'class java.util.LinkedHashMap' } - '{_id=1, title=my great exercise, starred=true}'.
Did you mean byInstanceId(Object localId, Class entityClass)?
JaversException MALFORMED_JQL: Invalid JQL query, object passed to byInstance(Object) query should be instance of Entity or ValueObject, got MapType{ baseType: 'class java.util.LinkedHashMap' } - '{_id=1, title=my great exercise, starred=true}'.
Did you mean byInstanceId(Object localId, Class entityClass)?
    at org.javers.repository.jql.FilterDefinition$InstanceFilterDefinition.compile(FilterDefinition.java:91)
    at org.javers.repository.jql.JqlQuery.compile(JqlQuery.java:129)
    at org.javers.repository.jql.QueryCompiler.compile(QueryCompiler.java:19)
    at org.javers.repository.jql.ShadowStreamQueryRunner$StreamQuery.<init>(ShadowStreamQueryRunner.java:59)
    at org.javers.repository.jql.ShadowStreamQueryRunner.queryForShadowsStream(ShadowStreamQueryRunner.java:34)
    at org.javers.repository.jql.QueryRunner.queryForShadowsStream(QueryRunner.java:32)
    at org.javers.core.JaversCore.findShadowsAndStream(JaversCore.java:194)
    at org.javers.core.JaversCore.findShadows(JaversCore.java:188)

我应该如何构建JqlQuery来查找阴影?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-02 16:50:26

您可以比较两个顶级map,但不能将map提交到Javers Repository (应该抛出异常),因为map没有标识符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66902842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档