문제

개발중인 프로그램에서 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 고용인 서비스

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();
        }
    }
}
도움이 되었습니까?

해결책

직원 수업에는 분리 가능 = "true"가 없습니다.

당신은 변경해야합니다

@PersistenceCapable(identityType = IdentityType.APPLICATION)

에게

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")

다른 팁

그것이 중요합니까? addEmployee, 당신은 다음과 같은 peristencemanager를 얻습니다.

PersistenceManager pm = PMF.get().getPersistenceManager();

그러나 Getemployees에서는 이렇게 부릅니다

PersistenceManager pm = getPersistenceManager();

사용하지 않고 PMF.get().

나는 코드를 조금 바꾸었고 지금은 모든 것이 정상입니다. 여전히이 문제를 일으킨 원인을 모릅니다.

지금은 컬렉션 대신 목록을 사용하고 있습니다 ** (1), 나는 RPC를 간단한 배열로 반환합니다.(2) ** 그리고 나는 query ** (3) **을 수행하는 방식을 변경했습니다.

(1) 목록 결과 = (list) query.execute ();

(2) 귀환 (직원 []) 직원 .ToArray (신입 사원 [0]);

(3) query query = pm.newquery (Employee.class);

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top