هل يمكنني الاستمرار في الكائنات الفرعية في معالج @بريبيرسيست من فئة الأم?(تجسيد 3. 1 ب 1)
-
27-10-2019 - |
سؤال
أنا جديدة على تشييء ومحاولة تنفيذ علاقة واحد لكثير.لدي كيانات التنظيم والكيان شخص.المنظمة لديها @Transient
الممتلكات قائمة< شخص > اتصل الناس.شخص الطبقة لديه @Parent
الممتلكات مفتاح< التنظيم > مفتاح التنظيم التي يمكنني تعيين عبر اضع.
أود أن تستمر الاتصالالناس في @PrePersist
معالج التنظيم.من أجل القيام بذلك ، أحتاج إلى تعيين مفتاح الوالدين شخصيا.
ويكي هنا يقول: "لا يمكنك تحديث الحقول @إد أو @ الأصل في رد اتصال @بريبيرسيست;بحلول هذا الوقت ، تم بالفعل إنشاء الكيان منخفض المستوى بمفتاح كامل بحيث يمكن تمريره كمعلمة اختيارية."
لست متأكدا من أن هذه لا تزال معلومات دقيقة ?لأن مفتاح com.google.appengine.api.datastore.Entity
الكائن الذي أحصل عليه PrePersist
معالج لديه المفتاح الذي يقول حرفيا"لا معرف حتى الآن".
كيف يمكنك تنفيذ هذا ?
شكرا لك!
تحديث في نوفمبر 17, 2011:
في الهدف الجديد 4 سنكون قادرين على القيام بعلاقات شبه تلقائية مثل هذه:
class Beastie {
@Parent
@Load
ParentThing parent;
@Id Long id;
@Load({"bigGroup", "smallGroup"})
SomeThing some;
@Load("bigGroup")
List<OtherThing> others;
@Load
Ref<OtherThing> refToOtherThing;
Ref<OtherThing> anotherRef; // this one is never fetched automatically
}
هنا تتطور وثيقة تصميم الإصدار الجديد.
هذه أخبار كبيرة. غصين مؤلف, جون باترسون, انضم مشروع تشييء اليوم.
المحلول
جلالة الملك ، يبدو أنك بحاجة إلى جعل داو أمام نماذج البيانات الخاصة بك.لذلك ، سوف تكون قادرة على القيام بشيء من هذا القبيل:
Organization organization = ...
List<Person> people = ...
ob.put(organization)
for (Person person: people) {
person.organizationKey = organization.getKey();
ob.put(person);
organization.contactPeopleKeys.add(person.getKey());
}
ob.put(organization)
غاي + تشييء يتطلب الكثير من الشيء للتعامل مع التعليمات البرمجية الخاصة بك،لذلك هو شيء شائع