java-MongoRepository findOne使用“ id”代替“ _id”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-MongoRepository findOne使用“ id”代替“ _id”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1143字,纯文字阅读大概需要2分钟。
内容图文
![java-MongoRepository findOne使用“ id”代替“ _id”](/upload/InfoBanner/zyjiaocheng/662/cd7b57f43d8b49e4b2508206ca5b2090.jpg)
我有一个非常类似于此的设置:http://spring.io/guides/gs/accessing-data-mongodb/
在我的POJO类中,我使用String字段(用@Id注释)并手动进行设置.
public class MyPojo {
@Id
private String id
public MyPojo(String id) {
this.id = id
}
//...
}
像示例中一样,我使用MongoRepository的扩展接口:
public interface MyPojoRepository extends MongoRepository<MyPojo, String> {
}
当我保存对象时
myrepo.save(new MyPojo("user"));
一切正常,在我的集合_id =“ user”中,正如我期望的那样.
但是,如果我现在要查询该对象:
myrepo.findOne("user")
我收到空值.调试日志显示我的集合被查询
{ “id” : “user” }
而不是“ _id”.这是故意行为吗?我觉得这很令人困惑.特别是因为JavaDoc在这里明确提到了“ id”一词.
//编辑:
myrepo.exists("user")
返回true …
解决方法:
可以使用以下注释来更改保存在MongoDB中的字段名称:
import org.springframework.data.mongodb.core.mapping.Field
通过使用注释,您可以在mongoDB中定义字段名称.
例如:
@Field("email")
private EmailAddress emailAddress;
现在,emailAddress将使用密钥email保存在数据库中.
mongoDB将始终使用_id作为文档的唯一标识符之一.
在这种情况下,您可以使另一个字段调用userId,它可以与_id字段重复,但是使用您喜欢的语法,例如:
@Field("id")
private String userId;
希望对您有所帮助.
内容总结
以上是互联网集市为您收集整理的java-MongoRepository findOne使用“ id”代替“ _id”全部内容,希望文章能够帮你解决java-MongoRepository findOne使用“ id”代替“ _id”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。