Google Appengine - Объект с идентификатором "com.google.appengine.api.datastore.Key: продукт (" Potatoe ")" управляется другим диспетчером объектов - PullRequest
0 голосов
/ 20 января 2010

Привет, я сталкиваюсь с распространенной ошибкой ", управляемой другим диспетчером объектов"

Я посмотрел в Интернете и не нашел решения, подходящего для моей проблемы. Я звоню по следующему коду со страницы JSP

PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "SELECT FROM " +Location.class.getName();
List<Location> locTs = (List<Location>) pm.newQuery(query).execute();
for (Location location : locTs) {
   location.genRes(pm);
}
pm.close();
return "done";

location.genRes

 public void genRes(PersistenceManager pm) {
 Key product = this.getLtype(pm).getProductKey();
 String query = "SELECT FROM " + LocationInventry.class.getName() + " WHERE location == '"+key.getId()+"' && product == '"+product.getId()+"'";
 List<LocationInventry> lvd = (List<LocationInventry>) pm.newQuery(query).execute(); 
 if (lvd.size() == 0 ) {
  LocationInventry locationInventry = new LocationInventry(product, this);
  pm.makePersistent(locationInventry);
 } 
 else {
  lvd.get(0).gen();
 }
}

Ошибка генерируется в pm.makePersistent (locationInventry);

Насколько я могу судить, я использую только одно постоянное управление и закрываю его после использования. Спасибо за любую помощь.

Object with id "com.google.appengine.api.datastore.Key:Product("Potatoe")" is managed by a different Object Manager
org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:375)
org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:674)
org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:694)
net.sparktank.quilage.datastore.Location.genRes(Location.java:220)
net.sparktank.quilage.server.MainRunner.genResources(MainRunner.java:239)
org.apache.jsp.server.generateResources_jsp._jspService(generateResources_jsp.java:45)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:806)

1 Ответ

1 голос
/ 26 января 2010

У меня была такая же проблема некоторое время назад, и у меня есть расплывчатая память, что мой файл jdoconfig.xml отсутствовал или неправильно настроен. Проверьте http://code.google.com/appengine/docs/java/datastore/usingjdo.html для более подробной информации.

...