GWT + JDO +的ArrayList
-
12-09-2019 - |
题
我得到一个程序我正在开发一个空的ArrayList。出于测试目的,我创造了这个仍然有同样的问题,真正的小例子。我已经尝试过diferent主键,但问题仍然存在。
任何意见或建议?
<强> 1-Employee类强>
@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的EmployeeService 强>
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();
}
}
}
解决方案
您Employee类没有可拆卸= “真”。
您应该改变
@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)强>列出结果=(列表)query.execute();
<强>(2)强>返回(员工[])employees.toArray(新雇员[0]);
<强>(3)强>查询的查询= pm.newQuery(Employee.class);
不隶属于 StackOverflow