2014-06-29 106 views
0

我已经运行MongoDB服务器,创建test1数据库与集合称为拉链。 (取自http://media.mongodb.org/zips.json)。现在我想使用Morphia从我的应用程序中读取它。Morphia与MongoDB连接

以下吗啡教程(https://github.com/mongodb/morphia/wiki/GettingStarted): 我创建了maven项目,并且增加了依赖关系(https://github.com/mongodb/morphia/wiki/Dependencies)。现在我的项目只包含实体类和main。 实体类:

package com.mycompany.morphia; 

import com.mongodb.Mongo; 
import com.mongodb.MongoClient; 
import java.io.IOException; 
import org.mongodb.morphia.Datastore; 
import org.mongodb.morphia.Morphia; 

public class App 
{ 
    public static void main(String[] args) throws IOException 
    { 
     MongoClient m = new MongoClient("localhost", 27017); 
     Datastore ds = new Morphia().createDatastore(m, "test1"); 
     MyEntity e = ds.find(MyEntity.class).get(); 
     System.out.println(e.city.toString()); 
     System.in.read(); 
    } 
} 

package com.mycompany.morphia; 

import com.sun.corba.se.spi.ior.ObjectId; 
import org.mongodb.morphia.annotationsEntity; 
import org.mongodb.morphia.annotations.Id; 

@Entity 
public class MyEntity { 
    @Id String _id; //maybe ObjectId ? 
    String city; 
    Object loc; 
    Integer pop; 
    String state; 

} 

和主类仍然在调试时我得到空。我不知道如何检查我是否连接到我的数据库,以及如何正确查询它。

回答

0

的问题是在我的@Entity

public Object loc; 

对象类型引起的问题。我只是删除它。

1
  1. 使用的ObjectId,而不是字符串
  2. com.sun.corba.se.spi.ior.ObjectId是错误的包 - 使用org.bson.types.ObjectId代替
  3. 是什么e.toString()给你?
+0

1.我改变了ObjectId,没有改变。 2.我看到你写的软件包没有区别。 3. MyEntity e = ds.find(MyEntity.class).get();为空 有没有更多的想法? – Kula

+0

我想你的意思是她应该使用'org.bson.types.ObjectId'来代替。 – evanchooly

+0

Thx,错误的复制粘贴 – xeraa

0

如果你得到一个空值,那么你连接到数据库。您的输出表明该集合中的第一个文档不包含名为“城市”的字段。

+0

evanchooly - >更改为org.bson.types.ObjectId不会更改任何内容。 我不确定我是否被连接,因为如果我更改“test1”其他任何东西(例如“asdfsdfdsf”),我会收到相同的结果。 您建议第一个文件不包含“城市”,但不包含任何内容。此外,我确定'zips'集合包含给定的我发布的帖子记录 - 我已经在MongoDB shell中检查过ti。 我不知道我的MyEntitity编码是否正确... – Kula

+0

如果它改变了MongoDB shell中的某些东西,我使用db.zips.find()来查看我的记录od DB。 运行我的项目时出错: 未能执行目标org.codehaus.mojo:exec-maven-plugin:1.2.1:exec(default-cli)对项目morphia:命令执行失败。进程退出时出现错误:1(退出值:1) - > [帮助1] – Kula

+0

使用@Entity(“zips”)注释您的实体。默认情况下,morphia使用类名作为集合名称,但数据位于zips集合中。 – evanchooly