我得到一个程序我正在开发一个空的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);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top