2016-05-12 9 views
0

私はmorphiaを使って単純なfindOne()をやろうとしています。私のコードは次のようになります:私のJAVAクラスでのモルフィアマッピング

public static void main(String[] args) 
{ 
    MongoClient client = new MongoClient(); 
    Morphia morphia = new Morphia(); 
    morphia.map(Restaurant_M.class); 
    Datastore ds = morphia.createDatastore(client, "test"); 
    System.out.println(ds.find(Restaurant_M.class).get()); 
    client.close(); 
} 

私は、nullが表示されます。私は間違っていることを見つけることができません。誰かが私を正しい方向に向けることができますか?ありがとう。

EDIT コレクション形式

{ 
    "_id" : ObjectId("572eb5df1d739cc73c21f953"), 
    "address" : { 
      "building" : "469", 
      "coord" : [ 
        -73.961704, 
        40.662942 
      ], 
      "street" : "Flatbush Avenue", 
      "zipcode" : "11225" 
    }, 
    "borough" : "Brooklyn", 
    "cuisine" : "Hamburgers", 
    "grades" : [ 
      { 
        "date" : ISODate("2014-12-30T00:00:00Z"), 
        "grade" : "A", 
        "score" : 8 
      }, 
      { 
        "date" : ISODate("2014-07-01T00:00:00Z"), 
        "grade" : "B", 
        "score" : 23 
      }, 
      { 
        "date" : ISODate("2013-04-30T00:00:00Z"), 
        "grade" : "A", 
        "score" : 12 
      }, 
      { 
        "date" : ISODate("2012-05-08T00:00:00Z"), 
        "grade" : "A", 
        "score" : 12 
      } 
    ], 
    "name" : "Wendy'S", 
    "restaurant_id" : "30112340" 
} 

@Entityクラス

@Entity("restaurants") 
public class Restaurant_M 
{ 
    @Id 
    public ObjectId _id; 
    @Property("borough") 
    public String town; 
    public String cuisine; 
    public String name; 
    @Property("restaurant_id") 
    public String r_id; 

答えて

0

public Restaurant_M getByID (String id) 
{ 
    Query<Restaurant_M> query = createQuery().field("cuisine").equal(id); 
    return query.get(); 
} 

を、次のようにmainメソッドを更新し、それが

public static void main(String[] args) 
{ 
    MongoClient client = new MongoClient("127.0.0.1:27017"); 
    Morphia morphia = new Morphia(); 
    Datastore ds = morphia.createDatastore(client, "test"); 
    RestaurantDAO rdao = new RestaurantDAOImpl(Restaurant_M.class, ds); 
    Restaurant_M r = rdao.getByID("Hamburgers"); 
    System.out.println(r); 

    r = ds.find(Restaurant_M.class).get(); 
    System.out.println (r); 

} 
0

問題は、あなたがあなただけのエンティティにマッピングするために使用できるエンティティ について必要なすべての情報を与えていないということです。 dt.getCollection(Restaurant_M.class); DBObjectを使用する または dt.createQuery(Restaurant_M.class).field( "")。equal( "指定する")。私は次のようにDBOの実装を作っ

+0

を働いていた私は、追加情報と質問を編集しました。エンティティに関する完全なマッピング情報を提供していると思います – Newton

関連する問題