كيفية إضافة كائن تابع لأحد الوالدين مع محرك التطبيقات؟

StackOverflow https://stackoverflow.com/questions/1219449

  •  10-07-2019
  •  | 
  •  

سؤال

ولدي فئتين في تملكها واحد لكثير العلاقة. الأصل هو الخريطة، والطفل هو POI (نقطة من الفائدة). أحاول أن أضيف نقطة مهمة إلى خريطة موجودة، ولكن يمكنني الحصول على استثناء عندما أحاول أن تستمر التغيرات بلدي. وهنا فئتين:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Map {

    @PrimaryKey
     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent(mappedBy = "map")
    private List<Poi> pois;

    public List<Poi> getPois() {
        return pois;
    }
}

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Poi {

    @PrimaryKey
     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key id;

    @Persistent
    private Map map;

    public Map getMap() {
        return map;
    }
    public void setMap(Map map) {
        this.map = map;
    }
}

وهنا هو كيف اني اسعى الى استخدامها:

PersistenceManager pm = PMF.get().getPersistenceManager();

// create a new POI
Poi poi = new Poi();

// find the Map by its ID
Map map = pm.getObjectById(Map.class, Long.decode(mapId));

// add the POI to the map
map.getPois().add(poi);

// persist!
pm.makePersistent(map);
pm.close();

والسطر "map.getPois () إضافة (البوي)؛" يطرح استثناء قائلا "java.lang.ClassCastException: java.lang.Long" ولكن لا تقول لي لماذا. إذا أتحول حولها إلى "poi.SetMap (خريطة)؛" انها مجرد فشل بصمت. لا يوجد أي رسالة خطأ ولا شيء يحدث.

لا أحد يعرف كيفية التعامل مع علاقة واحد لكثير في محرك التطبيقات بشكل صحيح؟ لا أحد يعرف من أي موارد جيدة؟ وثائق جوجل كان مفيدا أقل ما يقال ولكنها تفتقر حقا.

هل كانت مفيدة؟

المحلول

وأول شيء للتأكد من أن كنت تستخدم الإصدار 1.2.2 من SDK. / وقدمت العديد من الإصلاحات والتحسينات إلى وظيفة الطفل / الأصل في هذا الإفراج . واحد أن تم إصلاح يبدو الكثير مثل مشكلتك، أو على الأقل ذات الصلة.

وإذا كان هذا لا يحل المشكلة، تأكد من أن درجة التي تستخدم رمز أعلاه في والمشروحPersistenceAware، على افتراض أنه ليسPersistenceCapable بالفعل.

إذا <م> أن لا يحل المشكلة، يمكنك إضافة الطبقة الكاملة التي تسبب المشكلة (قص ويفضل أن يكون وصولا الى الحد الأدنى من التعليمات البرمجية التي سوف تتكاثر استثناء) في مقتطفات الخاصة بك ل سبيل المثال، فإننا لا نرى الخريطة الأصلية الحصول على إنشاء وحفظ، وليس الحصول على لنرى أين يأتي mapId من.

نصائح أخرى

وأنا لست متأكدا من أن خريطة الخاص بك هو أفضل التجريد هنا. وأنا لا أعرف ما هو البوي. جوجل تقول لي انها الغذائية هاواي.

ولكن يظهر جوجل أيضا لي كيفية القيام احد لكثير أحادي الاتجاه العلاقة مع JDO. أنا لا أرى أي واحد إلى العديد من الشروح في التعليمات البرمجية. هل هذا ما نحاول القيام به؟ إذا كان الأمر كذلك، وربما هذا ما كنت في عداد المفقودين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top