簡體   English   中英

GAE 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM