我正在使用Google App Engine,並使用關於JDO的Google文檔創建了一個持久實體。該類如下:JDO實體修改不會持久
@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代碼:
@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請求我收到消息「3048個信息改變「。我檢查數據庫和數據沒有改變。持久性不能持久化我在對象中所做的更改。即使使用makePersistentAll(list)或makePersistent(object),結果也是一樣的:數據庫沒有變化。
我失蹤了什麼?
謝謝!
使用古老的GAE JDO更可能的,你沒有任何代碼有以確保提交數據(這是不支持與v1.x GAE JDO) – DataNucleus