![](/img/trans.png)
[英]How do I set up a transaction within a void function in Java GAE using Objectify?
[英]GAE Objectify load object created in transaction within same transaction
我嘗試使用objectify事務,但是當我需要重新加載在同一事務中創建的對象時,我遇到了一些問題。
拿這個示例代碼
@Entity
public class MyObject
{
@Parent
Key<ParentClass> parent;
@Index
String foo;
}
ofy().transact(new VoidWork()
{
@Override
public void vrun()
{
ParentClass parent = load();// load the parent
String fooValue = "bar";
Key<ParentClass> parentKey = Key.create(ParentClass.class, parent.getId())
MyObject myObject = new MyObject(parentKey);
myObject.setFoo(fooValue);
ofy().save().entity(myObject).now();
MyObject reloaded = ofy().load().type(MyObject.class).ancestor(parentKey).filter("foo", fooValue).first().now();
if(reloaded == null)
{
throw new RuntimeException("error");
}
}
});
我的對象重新加載總是為null,也許我想念一些東西,但在邏輯上我可以查詢在同一個事務中創建的對象?
謝謝
在這種特定情況下,雲數據存儲區與關系數據庫不同。 文件說明 -
與大多數數據庫不同,查詢和獲取Cloud Datastore事務不會在該事務中看到先前寫入的結果。 具體而言,如果在事務中修改或刪除實體,則查詢或查找將在事務開始時返回實體的原始版本,如果實體不存在則返回任何內容。
https://cloud.google.com/datastore/docs/concepts/transactions#isolation_and_consistency
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.