在我正在开发的程序中,我得到了一个Null ArrayList。出于测试目的,我创建了这个仍然存在相同问题的非常小的示例。我已经尝试过不同的主键,但问题仍然存在。
有什么想法或建议吗?
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-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();
}
}
}发布于 2010-11-14 23:23:01
你的雇员班没有可拆卸的=“真”。
你应该换衣服
@PersistenceCapable(identityType = IdentityType.APPLICATION)至
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")发布于 2009-11-02 17:14:19
在addEmployee中,您获得这样的persistenceManager是否有意义:
PersistenceManager pm = PMF.get().getPersistenceManager();但在getEmployees中,你这样称呼它
PersistenceManager pm = getPersistenceManager();而不使用PMF.get()。
发布于 2009-11-03 17:26:59
我稍微修改了代码,现在一切都正常了,但我还是不知道是什么导致了这个问题。
我现在使用的是列表而不是集合**(1),我通过RPC(2)*将所有内容作为简单数组返回,并且改变了我进行查询的方式**(3)**。
(1)列表结果=(列表) query.execute();
(2) return (Employee[]) employees.toArray(新雇员);
(3)查询查询= pm.newQuery(Employee.class);
https://stackoverflow.com/questions/1662467
复制相似问题