【问题标题】:How are ids autogenerated in spring data couchbase?春季数据沙发库中如何自动生成ID?
【发布时间】:2017-12-27 20:49:53
【问题描述】:

我想在 spring data couchbase 中为我的文档创建 ID 的自动生成。 Spring 文档对此有步骤:https://docs.spring.io/spring-data/couchbase/docs/current/reference/html/#couchbase.autokeygeneration

这是我的代码:

@Document
public class User {
     @Id 
     @GeneratedValue(strategy = GenerationStrategy.USE_ATTRIBUTES, delimiter = ".")
     private String id;
     @IdPrefix(order=0)
     private String userPrefix;
     @IdSuffix(order=0)
     private String userSuffix;
     ...
}

我为此创建了一个存储库:

public interface UserRepository extends CrudRepository<User, String> {

}

现在,当我尝试将记录保存到用户存储桶(userRepository.save(user)) 时,出现以下异常:

java.lang.IllegalArgumentException: The Document ID must not be null or empty.
    at com.couchbase.client.java.document.AbstractDocument.<init>(AbstractDocument.java:53) ~[java-client-2.3.7.jar:na]
    at com.couchbase.client.java.document.RawJsonDocument.<init>(RawJsonDocument.java:149) ~[java-client-2.3.7.jar:na]
    at com.couchbase.client.java.document.RawJsonDocument.create(RawJsonDocument.java:80) ~[java-client-2.3.7.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate.encodeAndWrap(CouchbaseTemplate.java:157) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate.access$400(CouchbaseTemplate.java:87) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate$11.doInBucket(CouchbaseTemplate.java:591) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate$11.doInBucket(CouchbaseTemplate.java:586) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate.execute(CouchbaseTemplate.java:536) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate.doPersist(CouchbaseTemplate.java:586) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate.save(CouchbaseTemplate.java:233) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.core.CouchbaseTemplate.save(CouchbaseTemplate.java:228) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]
    at org.springframework.data.couchbase.repository.support.SimpleCouchbaseRepository.save(SimpleCouchbaseRepository.java:86) ~[spring-data-couchbase-2.2.9.RELEASE.jar:na]

...

请帮忙。

【问题讨论】:

    标签: couchbase auto-generate spring-data-couchbase


    【解决方案1】:

    您正在使用不支持自动生成密钥的 Spring Data Couchbase 2.2.9 版。

    如果您想要自动生成的密钥,您应该使用更高版本(例如 3.0.2)

    有关最新版本和说明,请参见此处:http://projects.spring.io/spring-data-couchbase/

    【讨论】:

    • 我认为情况并非如此。如果您查看 2.2.9.RELEASE 的文档,文档会提到自动生成密钥。也许缺少自动配置? docs.spring.io/spring-data/couchbase/docs/2.2.9.RELEASE/…
    • 其实看来你是对的,很快就会删除这个答案。 :)
    • 顺便说一句,我认为 2.2.9 的文档有问题。注释在那里,但它们对密钥生成没有影响。当我查看 PR 时,它被标记为好像已合并到 3.0.x 分支中。所以,Spring Data Couchbase 团队的人需要加入。:) 请不要删除您的评论,因为它是引导我走上正确道路的极少数 cmets 之一。
    猜你喜欢
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2016-01-30
    • 2012-11-13
    相关资源
    最近更新 更多