繁体   English   中英

Android Realm RelationShip返回null

[英]Android Realm relationShip return null

我有一个称为RealmObject的模型类,称为ProductsDetailInformation ,在此模型中,我有一个字段

private RealmList<ProductSlideShowImages> slideShowImages;

我想从ProductSlideShowImages模型中获取此产品图像,但是此测试返回[0] ,例如:

ProductsDetailInformation = [
    {id: 57f72549-53e1-4177-9e52-80b8421559b7}, 
    {marketId: bc76b7a5-3166-11e6-b8fe-ec9a74f8851a}, 
    {productId: bc76b7a5-3166-11e6-b8fe-ec9a74f8851a-123456}, 
    {weight: 10}, 
    {cost: 1000}, 
    {color: blue}, 
    {madeIn: china}, 
    {gender:}, 
    {sex:}, 
    {quality: low}, 
    {size: 42}, 
    {sizeModel: xxl}, 
    {count: 10}, 
    {rating: 2}, 
    {description: my description}, 
    {created_at: 2016 - 07 - 17}, 
    {updated_at: 2016 - 07 - 14}, 
    {slideShowImages: RealmList < ProductSlideShowImages > [0]}
]

在这两者中, marketIdproductId具有相同的数据。

ProductsDetailInformation类:

public class ProductsDetailInformation extends RealmObject{

    @PrimaryKey
    private String id;
    private String marketId;
    private String productId;
    private String weight;
    private String cost;
    private String color;
    private String madeIn;
    private String gender;
    private String sex;
    private String quality;
    private String size;
    private String sizeModel;
    private String count; 
    private String rating;
    private String description;
    private String created_at;
    private String updated_at;

    /**
     * RelationShip columns with ProductSlideShowImages table
     */
    private RealmList<ProductSlideShowImages> slideShowImages;

    /*SETTER AND GETTER*/
}

ProductSlideShowImages类:

public class ProductSlideShowImages extends RealmObject{
    @PrimaryKey
    private String id;
    private String marketId;
    private String productId;
    private String imageFileName;
    private String created_at;
    private String updated_at;

    /*SETTER AND GETTER*/
}

通过查询获取结果:

List<ProductsDetailInformation> productsDetails = 
realm.where(ProductsDetailInformation.class).equalTo("marketId",marketUUid).findAll();

ProductSlideShowImages模型和ProductsDetailInformation不会一起填充,它们是在不同的时间和地点填充

编辑:

这下面的交易我将信息保存到ProductSlideShowImages模型

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        ProductSlideShowImages slideShowImages = new ProductSlideShowImages();
        try {
            //@formatter:off
                slideShowImages.setId            ( UUID.randomUUID().toString()              );
                slideShowImages.setMarketId      ( jsonObject.getString ( "marketId"         ));
                slideShowImages.setProductId     ( jsonObject.getString ( "productId"        ));
                slideShowImages.setImageFileName ( jsonObject.getString ( "imageFileName"    ));
                slideShowImages.setCreated_at    ( jsonObject.getString ( "created_at"       ));
                slideShowImages.setUpdated_at    ( jsonObject.getString ( "updated_at"       ));
            //@formatter:on
            realm.copyToRealm(slideShowImages);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
});

和下面的事务以其他方法将数据保存到ProductsDetailInformation模型中:

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        ProductsDetailInformation products = new ProductsDetailInformation();
        try {
            //@formatter:off
                products.setId            ( UUID.randomUUID().toString()            );
                products.setMarketId      ( jsonObject.getString ( "marketId"     ));
                products.setProductId     ( jsonObject.getString ( "productId"     ));
                products.setWeight        ( jsonObject.getString ( "weight"       ));
                products.setCost          ( jsonObject.getString ( "cost"         ));
                products.setColor         ( jsonObject.getString ( "color"        ));
                products.setMadeIn        ( jsonObject.getString ( "madeIn"       ));
                products.setGender        ( jsonObject.getString ( "gender"       ));
                products.setSex           ( jsonObject.getString ( "sex"          ));
                products.setQuality       ( jsonObject.getString ( "quality"      ));
                products.setSize          ( jsonObject.getString ( "size"         ));
                products.setSizeModel     ( jsonObject.getString ( "sizeModel"    ));
                products.setCount         ( jsonObject.getString ( "count"        ));
                products.setRating        ( jsonObject.getString ( "rating"       ));
                products.setDescription   ( jsonObject.getString ( "description"  ));
                products.setCreated_at    ( jsonObject.getString ( "created_at"   ));
                products.setUpdated_at    ( jsonObject.getString ( "updated_at"   ));
            //@formatter:on
            realm.copyToRealm(products);
        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("Error ", " parse json objects");
        }
    }
});

您必须手动设置关系。

    ProductsDetailInformation products = new ProductsDetailInformation();
    products.setSlideShowImages(new RealmList<ProductSlideShowImages>());
    try {
        ...
        RealmResults<ProductSlideShowImages> slideShows = realm
            .where(ProductSlideShowImages.class)
            .equalTo("marketId", products.getMarketId())
            .findAll();
        for(ProductSlideShowImages slideShow : slideShows) { //only 0.89.0+
            products.getSlideShowImages().add(slideShow);
        }
        realm.copyToRealm(products);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM