org.ektorp.DbAccessException如果未从CouchDbDocument扩展POJO

时间:2016-12-17 19:38:36

标签: java couchdb ektorp

我的Java应用程序使用Ektorp持久性api http://ektorp.org/reference_documentation.html连接到CouchDB来存储和检索对象。我正在尝试存储一个具有少量String属性的简单bean 使用CouchDbConnector.create(mybean)创建文档和CouchDbConnector.get(mybean.class,doumentid)来检索文档。 当我使用CouchDBDocument扩展我的bean时,如http://ektorp.org/reference_documentation.html#d100e355所述,它在创建和检索文档时效果很好但是如果我不使用CouchDBDocument扩展它并注释这里列出的“id”和“revision”属性http://ektorp.org/reference_documentation.html#d100e31,然后创建文档,但检索文档会抛出此异常。

嵌套异常是org.ektorp.DbAccessException:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“_id”

我通过将名称“id”更改为“_id”来尝试各种选项,但它不起作用。另外,我注意到当我没有使用CouchDbDocument扩展我的bean然后在couchdb中,在文档中创建“id”和“revision”字段以及“_id”和“_rev”。扩展CouchDbDocument时不会创建这些字段。知道这里有什么问题吗?

2 个答案:

答案 0 :(得分:0)

id字段必须序列化为" _id"。编写单元测试并验证您的类可以写入json并使用名为_id和_rev的字段从json读取。

答案 1 :(得分:0)

问了问题已经有一段时间了,但如果有人遇到同样的问题,我会回答。

正确的Maven依赖项:

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.2</version>
</dependency>

然后在您的POJO中将import org.codehaus.jackson.annotate.*;替换为import com.fasterxml.jackson.annotation.*;