Google App Engine을 사용하고 있으며 JDO에 관한 Google 문서를 사용하여 영구 엔티티를 만들었습니다. 3048 메시지가 변경JDO 엔티티 수정이 지속되지 않습니다.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/plain");
PrintWriter writer = resp.getWriter();
Date tenDaysAgo = new Date(new Date().getTime()-TEN_DAYS_IN_MILISSECOND);
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Query queryMessages = pm.newQuery(Message.class);
queryMessages.setFilter("isNew == True && lastUpdate <= lastUpdateParam");
queryMessages.declareParameters(Date.class.getName() + " lastUpdateParam");
List<Message> results = (List<Message>) queryMessages.execute(tenDaysAgo);
for(Message msg : results) {
msg.isNew = false;
pm.makePersistent(msg);
}
//pm.makePersistentAll(results);
writer.print(results.size() + " messages changed.");
}finally {
pm.close();
}
}
하지만, 내가 POST 요청을 할 때이 메시지가 "가 나타납니다
@PersistenceCapable
public class Message {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
public long id;
@Persistent
public Text message;
@Persistent
public boolean isNew;
@Persistent
public long categoryId;
@Persistent
public boolean plus;
@Persistent
public Date lastUpdate;
Message(long id, String message, boolean isNew, long categoryId, Date lastUpdate, boolean plus) {
this.id = id;
this.message = new Text(message);
this.isNew = isNew;
this.categoryId = categoryId;
this.lastUpdate = lastUpdate;
this.plus = plus;
}
}
그리고보다
, 나는이 (가) HttpServlet을 다음의 doPost 코드 생성 : 클래스는 다음과 같다 . " 데이터베이스를 확인하고 데이터는 변경되지 않습니다. 지속성은 객체에서 변경 한 내용을 유지하기 위해 작동하지 않습니다. makePersistentAll (list) 또는 makePersistent (object)를 사용하더라도 결과는 동일하지만 데이터베이스가 변경되지는 않습니다.내가 무엇이 누락 되었습니까?
감사합니다.
가능성보다는 고대 GAE JDO를 사용하여, 당신은이 코드가없는 데이터 커밋을 보장합니다 (v1.x GAE JDO에서 지원되지 않음) – DataNucleus