2014-06-29 10 views
0

J'ai un serveur MongoDB, créé la base de données test1 avec la collection appelée zips. (tirée du document http://media.mongodb.org/zips.json). Maintenant, je veux le lire à partir de mon application en utilisant Morphia.Morphia avec connexion MongoDB

suite à un tutoriel sur la morphologie (https://github.com/mongodb/morphia/wiki/GettingStarted): J'ai créé un projet maven et des dépendances mises à jour (https://github.com/mongodb/morphia/wiki/Dependencies). maintenant mon projet contient seulement la classe d'entité et le principal. classe Entité:

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; 

} 

et classe principale

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(); 
    } 
} 

encore en cours de débogage je suis nul. Je ne sais pas comment vérifier si je suis connecté à ma base de données et comment l'interroger correctement.

Répondre

0

Le problème était dans mon @Entity

public Object loc; 

Type d'objet a causé le problème. Je l'ai simplement enlevé.

1
  1. Utilisez ObjectId au lieu de chaîne
  2. com.sun.corba.se.spi.ior.ObjectId est le mauvais paquet - utiliser org.bson.types.ObjectId à la place
  3. Qu'est-e.toString() vous donner?
+0

1. J'ai changé pour ObjectId, aucun changement. 2. Je ne vois aucune différence dans les paquets que vous avez écrits. 3. MyEntity e = ds.find (MyEntity.class) .get(); est nul D'autres idées? – Kula

+0

Je pense que vous voulez dire qu'elle devrait utiliser 'org.bson.types.ObjectId' à la place. – evanchooly

+0

Thx, mauvais copier-coller – xeraa

0

Si vous obtenez une valeur nulle, vous êtes connecté à la base de données. Votre sortie suggère que le premier document de cette collection ne contient pas de champ appelé "ville".

+0

evanchooly -> Passer à org.bson.types.ObjectId n'a rien changé. Je ne suis pas sûr si je suis connecté parce que si je change "test1" n'importe quoi d'autre (par exemple "asdfsdfdsf") je reçois le même résultat. Vous suggérez que le premier fichier ne contient pas 'city' mais il ne contient rien. De plus, je suis sûr que la collection 'zips' contient des entrées postérieures - j'ai coché ti dans MongoDB shell. Je me demande si MyEntitity est codé correctement ... – Kula

+0

S'il change quelque chose dans le shell MongoDB, j'utilise db.zips.find() pour voir mes enregistrements de DB. lors de l'exécution de mon projet j'ai eu une erreur: Échec de l'exécution de l'objectif org.codehaus.mojo: exec-maven-plugin: 1.2.1: exec (default-cli) sur le projet morphia: L'exécution de la commande a échoué. Processus terminé avec une erreur: 1 (Valeur de sortie: 1) -> [Aide 1] – Kula

+0

Annotez votre entité avec @Entity ("zips"). Par défaut, morphia utilise le nom de classe pour le nom de collection, mais vos données sont dans la collection zips. – evanchooly

Questions connexes