我有以下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。有什么线索吗?
发布于 2016-12-21 15:53:35
如果不告知字符串的值是什么,MongoDb (或任何数据库)都不知道如何生成字符串ID。
默认的@Id是ObjectId的字符串表示,它可以由MongoDB自动生成。如果要将字符串ObjectId的类型更改为类,则该类至少需要定义:
**转换为string (可序列化),例如:
@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。希望这能指引你找到答案。
https://stackoverflow.com/questions/40152670
复制相似问题