Recuerda que en las ciencias informáticas cualquier problema casi siempere suele tener diversas soluciones, no obstante nosotros te mostraremos lo más óptimo y eficiente.
Solución:
Estoy un poco confundido en cuanto a saber por qué pensarías que esto funcionaría en primer lugar. Lo primero que debe saber es cómo asignar su POJO a un documento MongoDB. Actualmente, no le está diciendo al sistema (su código) cómo hacerlo.
Puede usar una biblioteca de mapeo para esto (me viene a la mente Morphia) o usar ReflectionDBObject. Cualquiera de las soluciones le permite asignar POJO a un documento MongoDB o un documento MongoDB a POJO (la primera forma es mucho mejor que la última).
DB db = mongoClient.getDB( "mydb" );
coll = db.getCollection("testCollection");
Employee emp = new Employee();
emp.setId("1001");
emp.setName("John Doe");
//Converting a custom Class(Employee) to BasicDBObject
Gson gson = new Gson();
BasicDBObject obj = (BasicDBObject)JSON.parse(gson.toJson(emp));
coll.insert(obj);
findEmployee(new BasicDBObject("id","1001"));
public static void findEmployee(BasicDBObject query)
DBCursor cursor = coll.find(query);
try
while(cursor.hasNext())
DBObject dbobj = cursor.next();
//Converting BasicDBObject to a custom Class(Employee)
Employee emp = (new Gson()).fromJson(dbobj.toString(), Employee.class);
System.out.println(emp.getName());
finally
cursor.close();
Pensé que sería útil publicar un código que hiciera conversiones en ambos sentidos.
Almacenamiento de un objeto de empleado
Encontrar y volver a crear un objeto de empleado
Espero que esto sea útil..
Pro
continúas trabajando con objetos fuertemente tipados como querías
Contra
A algunas personas realmente no les gusta: se extiende
package foo; import com.mongodb.BasicDBObject;
public class Employee extends BasicDBObject
private static final long serialVersionUID = 2105061907470199595L; //should be something shorter as "name" like "n" //here just use name to conform your sample public static final String NAME = "name"; public static final String NO = "no"; public static final String COLLECTION_NAME = "employee"; public Long getNo() return getLong(NO); public void setNo(long no) put(NO, no); public String getName() return getString(NAME); public void setName(String name) put(NAME, name);
package foo; import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.Mongo; import com.mongodb.MongoException;
public class Test
public static void main(String[] args) throws UnknownHostException, MongoException Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("yeahMongo"); Employee employee = new Employee(); employee.setNo(1L); employee.setName("yogesh"); DBCollection employeeCollection = null ; employeeCollection = db.getCollection(Employee.COLLECTION_NAME); employeeCollection.save(employee); System.err.println(employeeCollection.findOne());
Además de morphia, deberías echarle un vistazo a jongo: http://jongo.org/ jongo usa la misma sintaxis de forma que el motor js mongo, y me pareció un gran punto para un principiante. No tiene que cambiar su mapa mental entre mongojs y java. puede usar la muestra js con pequeños cambios.
¡Haz clic para puntuar esta entrada!(Votos: 0 Promedio: 0)Utiliza Nuestro Buscador