8

Aşağıdaki varlığa sahibim (ilgili olmayan alanlar/yöntemler kaldırıldı).Tek bir işlemde Google'ın DataStore (Yüksek Çoğaltma) için kaç tane nesne "çok fazla"?

public class HitsStatsTotalDO 
{ 
    @Id 
    transient private Long targetId; 

    public Key<HitsStatsTotalDO> createKey() 
    { 
     return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId); 
    } 
} 

Yani ... toplu Ben HitsStatsTotalDO.createKey() kullanarak anahtarları inşa hangi 10 nesneler için olsun yapmaya çalışıyorum.

java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.

çok fazla kaç lütfen açar mısın ve nasıl bunu düzeltmek için:

final List<Key<HitsStatsTotalDO>> keys = .... 

// This is being called in transaction.. 
Map<Key<HitsStatsTotalDO>, HitsStatsTotalDO> result = DAOBase.ofy().get(keys); 

istisna aşağıdaki atar ki: Böyle bir işlemde bir şekilde alın çalışılıyor? Belgedeki tam sayıyı bulamadım.

Teşekkürler!

cevap

5

Sorun, aldığınız varlık sayısı değil, çoklu varlık gruplarında oldukları gerçeğidir. Bir işlemi dışardan getirin veya bir XG (Cross Group) transaction kullanın.

+0

Evet, o kısmı yaklaşık 5 varlığı kaçırdım. – expert

+1

En azından Python SDK 1.7.3'te, BadRequestError'a iki farklı hata iletisi vardır: "çapraz grup işleminin açıkça belirtilmesi gerekir, bkz. TransactionOptions.Builder.withXG" ve "çok sayıda varlık grubunun tek bir işlemde çalıştırılması" işlem". Cevabınız birinciyi çözer, ancak ikincisi, 5'den fazla varlık grubunda çalışırsa XG işleminde gerçekleşebilir. –

+0

XG işlemleri için artık limit 25 varlık grubu gibi görünüyor. Https://cloud.google.com/appengine/docs/standard/java/datastore/transactions?csw=1#What_Can_Be_Done_In_a_Transaction sayfasına bakın. – rimsky

İlgili konular