gwt + jdo + arraylist
-
12-09-2019 - |
سؤال
أحصل على قائمة صفيف فارغة في برنامج أتطور. لأغراض الاختبار، قمت بإنشاء هذا المثال الصغير حقا لا يزال لديه نفس المشكلة. لقد جربت بالفعل مفاتيح أساسية مختلفة، لكن المشكلة تستمر.
أي أفكار أو اقتراحات؟
1-فئة الموظف
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Employee {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String key;
@Persistent
private ArrayList<String> nicks;
public Employee(ArrayList<String> nicks) {
this.setNicks(nicks);
}
public String getKey() {
return key;
}
public void setNicks(ArrayList<String> nicks) {
this.nicks = nicks;
}
public ArrayList<String> getNicks() {
return nicks;
}
}
2 - موظف
public class BookServiceImpl extends RemoteServiceServlet implements
EmployeeService {
public void addEmployee(){
ArrayList<String> nicks = new ArrayList<String>();
nicks.add("name1");
nicks.add("name2");
Employee employee = new Employee(nicks);
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(employee);
} finally {
pm.close();
}
}
/**
* @return
* @throws NotLoggedInException
* @gwt.typeArgs <Employee>
*/
public Collection<Employee> getEmployees() {
PersistenceManager pm = getPersistenceManager();
try {
Query q = pm.newQuery("SELECT FROM " + Employee.class.getName());
Collection<Employee> list =
pm.detachCopyAll((Collection<Employee>)q.execute());
return list;
} finally {
pm.close();
}
}
}
المحلول
فئة الموظف الخاصة بك لم يكن لديك فصل = "صحيح".
يجب أن تتغير
@PersistenceCapable(identityType = IdentityType.APPLICATION)
ل
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
نصائح أخرى
هل هو مهم في addEmployee
, ، يمكنك الحصول على persistencemanager مثل هذا:
PersistenceManager pm = PMF.get().getPersistenceManager();
ولكن في getemployees تسميها مثل هذا
PersistenceManager pm = getPersistenceManager();
دون استخدام PMF.get()
.
لقد غيرت الرمز قليلا، وكل شيء طبيعي الآن، لا يزال لا أعرف ما الذي تسبب في هذه المشكلة.
أنا أستخدم قوائم الآن بدلا من المجموعات ** (1), ، أعيد كل شيء كصفيف بسيط من خلال RPC(2) ** وأغيرت الطريقة التي قمت بها الاستعلام ** (3) **.
(1) قائمة النتائج = (قائمة) الاستعلام. execute ()؛
(2) عودة (الموظف []) الموظفين. النوع (موظف جديد [0])؛
(3) استعلام الاستعلام = PM.NewQuery (الموظف.كلاس)؛