2010-01-19 1 views
0

안녕하세요, 저는 다른 개체 관리자가 관리하는 일반적인 오류가 발생했습니다. "Google Appengine - 개체 ID가 "com.google.appengine.api.datastore.Key : Product ("Potatoe ")가 다른 개체 관리자에 의해 관리 됨

나는 온라인으로 둘러 보았고 내 문제에 맞는 해결책을 찾지 못했습니다. 나는

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)에 발생되고있는 JSP 페이지에서 다음 코드를 호출하고,

나는 영구 관리를 하나만 사용하고 있으며 사용 후에는 닫을 수 있습니다. 어떤 도움을 주셔서 감사합니다.

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) 
+0

아마도 dup ... http://stackoverflow.com/questions/1403515/appengine-datastore-object-with-id-is-managed-by-a-different-object-manager –

답변