MongoRepository自定义ID

时间:2016-10-20 11:06:03

标签: spring mongodb spring-data-jpa

我有以下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)。但是,当我尝试保存Team对象时,我收到一条错误消息,指出MongoDB不知道如何生成DBId。任何线索?

1 个答案:

答案 0 :(得分:0)

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

默认@IdObjectId的字符串表示形式,可以由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。希望能指导您的答案。