msc*_*iab 5 java mongodb morphia
我正在使用Morphia,MongoDB的Pojo映射器,我觉得很难在我看来应该很简单的任务:通过id获取一个对象.我能够找到集合中的所有对象,但我无法弄清楚使用从列表中获取的id查询的简单任务.我其实在谈论ObjectId.如果我尝试用JSON渲染它,我会看到
Gat*_* VP 13
这个问题似乎不完整.
您似乎也可以在Morphia QuickStart页面上找到问题的答案.似乎很简单如下.
Datastore ds = morphia.createDatastore("testDB");
String hotelId = ...; // the ID of the hotel we want to load
// and then map it to our Hotel object
Hotel hotel = ds.get(Hotel.class, hotelId);
Run Code Online (Sandbox Code Playgroud)
所以你肯定需要更多细节.
Datastore ds = morphia.createDatastore("testDB");
String hotelId = "516d41150364a6a6697136c0"; // the ID of the hotel we want to load
ObjectId objectId = new ObjectId(hotelId);
// and then map it to our Hotel object
Hotel hotel = ds.get(Hotel.class, objectId);
Run Code Online (Sandbox Code Playgroud)
如果您通过id查找并且id由用户提供(意味着它可以是任何类型的数据),则不应使用上面给出的解决方案.
正如文档中所解释的,ObjectId 由12个字节组成,因此如果您传递其他内容new ObjectId(myValue)
,您的代码将抛出一个IllegalArgumentException
.
以下是我通过id实现查找方法的方法:
public Model findById(String id) throws NotFoundException {
if (!ObjectId.isValid(id)) {
throw new NotFoundException();
}
ObjectId oid = new ObjectId(id);
Model m = datastore().find(Model.class).field("_id").equal(oid).get();
if (m == null) {
throw new NotFoundException();
}
return m;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12939 次 |
最近记录: |