首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoRepository自定义Id

MongoRepository自定义Id
EN

Stack Overflow用户
提问于 2016-10-20 19:06:03
回答 1查看 4.7K关注 0票数 2

我有以下MongoDB存储库

代码语言:javascript
复制
public interface TeamRepository extends MongoRepository<Team, TeamId> {
    ....
}

和以下类:

代码语言:javascript
复制
public abstract class DbId implements Serializable {
    @Id
    private final String id;

    public DbId(final String id) { this.id = id;}

    public String getId() { return id;}
}

public class TeamId extends DbId {

    public TeamId(final String id) {
        super(id)
    }
}

如您所见,我为存储库设置了一个自定义id (我使用的是MongoRepository,而不是像MongoRepository这样的东西)。但是,当我试图保存一个团队对象时,我得到一个错误,说MongoDB不知道如何生成DBId。有什么线索吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-21 15:53:35

如果不告知字符串的值是什么,MongoDb (或任何数据库)都不知道如何生成字符串ID。

默认的@IdObjectId的字符串表示,它可以由MongoDB自动生成。如果要将字符串ObjectId的类型更改为类,则该类至少需要定义:

**转换为string (可序列化),例如:

代码语言:javascript
复制
@Override
public String toString() {
    return String.format(
            "TeamID[uniqueString=%s]",
            myUniqueString);
}

**如何生成Id。

您可以在TeamRepository中定义一个方法,即save(),以指定如何生成您的字符串。或者,您也可以结账

https://www.mkyong.com/mongodb/spring-data-mongodb-auto-sequence-id-example/

其中,示例指定getNextSequenceId()以生成NumberLong自定义id。希望这能指引你找到答案。

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

https://stackoverflow.com/questions/40152670

复制
相关文章

相似问题

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