2013-04-24 2 views
1

입니다. 현재 GAE가 JDO를 사용하는 작은 프로젝트에서 작업하고 있습니다. 그러나 업데이트 된 데이터를 유지하는 데 문제가있는 것 같습니다. 이상한 일은 로컬에서는 있지만 작동하지 않는 것입니다. 배포 된 앱 버전 업데이트는 매우 간단합니다 : 여기 누락 아무것도GAE는 배포 된 응용 프로그램에서 업데이트되지 않지만 로컬에있는 값은

update(Foo newBar) { 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    Transaction trans = pm.currentTransaction(); 
    trans.begin(); 
    Foo bar = pm.getObjectById(Foo.class, "someId"); 
    bar.baz = newBar.baz; 
    pm.makePersistent(bar); 
    trans.commit(); 
    pm.close(); 
} 

있습니까?

+0

가 어떻게 작동하지 않습니다 아무 가치가 같은 로그의

검사는 여러 가지를 공개 것인가? – dragonx

+0

처음으로 'bar'는 지속성을 갖지만 값은 모든 연속 호출에 대해 동일하게 유지됩니다. 그러나 로컬에서 실행되면 'bar'가 업데이트되고 모든 호출시 올바르게 유지됩니다. – hanneswurstes

답변

2

공개 입력란을 직접 업데이트 하시겠습니까? 이런. 영속성 메커니즘은 그렇게하지 않으면 해당 필드를 업데이트했다는 것을 알기를 희망합니다. 설정자를 사용하거나 업데이트 클래스를 @PersistenceAware로 향상 시키십시오. makePersistent 해당 호출이

+0

로그를 검사하면 아무런 문제가 드러나지 않았다. 로컬로 작동하고 객체가 더럽다고 표시되고 makePersistent에 대한 호출이 예상대로 작동합니다. 하지만 setter를 사용하면 트릭을 수행 할 수 있습니다. 고마워요 !! 아마도 DataNucleus의 지속성 메커니즘이 어떻게 작동하는지 알아야합니다 ... 로컬과 배포 된 동작간에 불일치가 있었던 이유는 무엇이 있을까요? – hanneswurstes