0

gwt와 함께 Google 응용 프로그램 엔진을 사용하고 있습니다. 나는 두 개의 클래스 질문과 내가 널 포인터 예외를 제공하는 질문에 대한 쿼리를 통해 액세스 할 때 투표를했습니다. 질문Google 응용 프로그램 엔진에서 쿼리를 실행할 때 널 포인터 예외가 발생합니다.

@PersistenceCapable(identityType=IdentityType.APPLICATION,table="question") 
public class Question implements Serializable { 

    private static final long serialVersionUID = 6355873282541087204L; 

    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    private Long id; 

    @Persistent 
    private String title; 

    @Persistent(dependent="true") 
    private Vote vote; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public Vote getVote() { 
     return vote; 
    } 

    public void setVote(Vote vote) { 
     this.vote = vote; 
    } 

} 

투표를 다음과 같이

내 클래스는

@PersistenceCapable(identityType=IdentityType.APPLICATION,table="vote") 
public class Vote implements Serializable{ 


    private static final long serialVersionUID = -1331159194642997258L; 

    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    private Long id; 

    @Persistent 
    private int like; 

    @Persistent 
    private int unlike; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public int getLike() { 
     return like; 
    } 

    public void setLike(int like) { 
     this.like = like; 
    } 

    public int getUnlike() { 
     return unlike; 
    } 

    public void setUnlike(int unlike) { 
     this.unlike = unlike; 
    } 

} 

@Override 
public List<QuestionDTO> viewAllQuestion() { 

    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    Query query = pm.newQuery(Question.class); 

    List<Question> list=null; 
    try{ 
     list = (List<Question>) query.execute(); 
    }finally{ 
     pm.close(); 
    } 

    List<QuestionDTO> questionDtoList = new ArrayList<QuestionDTO>(); 

    for(Question question : list){ 
     QuestionDTO questionDTO = new QuestionDTO(); 
     questionDTO.setId(question.getId()); 
     questionDTO.setTitle(question.getTitle()); 

     VoteDTO voteDTO = new VoteDTO(); 
     voteDTO.setId(question.getVote().getId()); 
     voteDTO.setLike(question.getVote().getLike()); 
     voteDTO.setUnlike(question.getVote().getLike());    
     questionDTO.setVoteDTO(voteDTO);    

     questionDtoList.add(questionDTO); 
    } 

    return questionDtoList; 
} 

오류가

,364,913 serverImpl 클래스 내 코드입니다

된다210

내가 틀렸어? 미리 감사드립니다.

+0

NPE가 * 자신의 코드 *에있는, 어떤 행에서 식별하지 못합니까? – DataNucleus

+0

'question.getVote()'줄에서 널 포인터 예외가 발생했는데 왜 null인지 알 수 없습니다. –

+0

제기 한 다른 질문에서 언급했듯이 객체를 검색 할 때 로그를 쉽게 볼 수 있고 수명주기 상태 등을 볼 수 있습니다. – DataNucleus

답변

0

내 실수가 있어요. 나는 Question 클래스의 Vote 클래스의 객체에 defaultFetchGroup = "true"를 할당하지 않았습니다. defaultFetchGroup = "true"영구 객체가 데이터 저장소에서 검색 될 때 필요합니다.

+0

또는 "반입 계획"에 해당 클래스 필드를 입력하십시오 (JDO 스펙 및 DN 문서 참조). – DataNucleus