MongoRepository custom Id



我有以下MongoDB存储库

public interface TeamRepository extends MongoRepository<Team, TeamId> {
    ....
}

和以下类:

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。有线索吗?

MongoDb(或任何数据库)将不知道如何生成一个字符串ID没有你通知它字符串的值是什么。

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

**转换为字符串(可序列化),例如:

@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。希望这能引导你找到答案。

最新更新