我正在开发的程序中有一个空数组列表。出于测试目的,我创建了这个仍然存在相同问题的非常小的示例。我已经尝试了不同的主键,但问题仍然存在。
有什么想法或建议吗?
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();
}
}
}
3条答案
按热度按时间gcxthw6b1#
我改变了一点代码,现在一切正常,但我仍然不知道是什么导致了这个问题。
我现在使用的是列表而不是集合**(1),我通过rpc(2)以简单数组的形式返回所有内容,并且我改变了查询(3)**的方式。
(1) list results=(list)query.execute();
(2) return(employee[])employees.toarray(new employee[0]);
(3) query=pm.newquery(employee.class);
zour9fqk2#
您的employee类没有detachable=“true”。
你应该改变
至
cunj1qz13#
这有意义吗
addEmployee
,将获得persistencemanager,如下所示:但在getemployees你这样称呼它
不使用
PMF.get()
.