首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT + JDO + ArrayList

GWT + JDO + ArrayList
EN

Stack Overflow用户
提问于 2009-11-02 17:03:04
回答 3查看 2K关注 0票数 0

在我正在开发的程序中,我得到了一个Null ArrayList。出于测试目的,我创建了这个仍然存在相同问题的非常小的示例。我已经尝试过不同的主键,但问题仍然存在。

有什么想法或建议吗?

1-雇员类别

代码语言:javascript
复制
@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

代码语言:javascript
复制
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();
        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-14 23:23:01

你的雇员班没有可拆卸的=“真”。

你应该换衣服

代码语言:javascript
复制
@PersistenceCapable(identityType = IdentityType.APPLICATION)

代码语言:javascript
复制
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
票数 1
EN

Stack Overflow用户

发布于 2009-11-02 17:14:19

addEmployee中,您获得这样的persistenceManager是否有意义:

代码语言:javascript
复制
PersistenceManager pm = PMF.get().getPersistenceManager();

但在getEmployees中,你这样称呼它

代码语言:javascript
复制
PersistenceManager pm = getPersistenceManager();

而不使用PMF.get()

票数 0
EN

Stack Overflow用户

发布于 2009-11-03 17:26:59

我稍微修改了代码,现在一切都正常了,但我还是不知道是什么导致了这个问题。

我现在使用的是列表而不是集合**(1),我通过RPC(2)*将所有内容作为简单数组返回,并且改变了我进行查询的方式**(3)**。

(1)列表结果=(列表) query.execute();

(2) return (Employee[]) employees.toArray(新雇员);

(3)查询查询= pm.newQuery(Employee.class);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1662467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档