0

私はsugarOrmを使用していて、住所オブジェクトを使用して場所を保存したいのですが、保存するとすべて問題ありませんが、住所を取得しようとすると常にnullになり、場所からの他のデータは保存され、取得できますが、取得できませんアドレス オブジェクトとその情報を取得できない理由がわかります。

私のコード:

public class PlaceModel extends SugarRecord<PlaceModel> implements Parcelable {
    @Ignore
    @Expose
    private ArrayList<CategoryModel> categories = new ArrayList<CategoryModel>();
    @Ignore
    @Expose
    private ArrayList<MediaContentModel> medias = new ArrayList<MediaContentModel>();
    @Ignore
    @Expose
    private ArrayList<ReviewContentModel> reviews = new      A ArrayList<ReviewContentModel>();
    @Expose
    private String name;
    @Expose
    @Ignore
    private List<Double> location = new ArrayList<Double>();
    @Expose
    private String website;
    @Expose
    private AddressModel address;
    @SerializedName("global_score")
    @Expose
    private Integer globalScore;
    @SerializedName("popularity_score")
    @Expose
    private Integer popularityScore;
    @SerializedName("quality_score")
    @Expose
    private Integer qualityScore;
    @Expose
    @Ignore
    private Object prices;
    @Expose
    @Ignore
    private Object hours;
    @Expose
    @Ignore
    private Object phone;
    @Expose
    private String createdAt;
    @Expose
    private String updatedAt;
    @SerializedName("idObject")
    @Expose
    private String idPlace;

    private String listCategory;

    private String listMedias;

    private String listReviews;

    private String listLocation;

    public PlaceModel() {
    }
    // Setters, getters and stuff for parcelable
}

住所モデル:

public class AddressModel extends SugarRecord<AddressModel> implements Parcelable {

    @SerializedName("street_address")
    @Expose
    private String streetAddress;
    @SerializedName("city")
    @Expose
    private String city;
    @SerializedName("state")
    @Expose
    @Ignore
    private Object state;
    @SerializedName("postal_code")
    private String postalCode;
    @SerializedName("country")
    @Expose
    private String country;

    public AddressModel(){
    }
    // Setters, getters and stuff for parcelable
}

保存すると:

public void getPlaceDetails(String id)
    {
        RestClient client = RestClient.getInstance();
        propertiesReader = new PropertiesReader(mContext);
        Properties apiProperties = propertiesReader.loadPropertiesFile("api.properties");

        client.createRestClient(apiProperties.getProperty("APIUrl"), mContext);
        ApiManager apiManager = client.getApiManager();
        PlaceModel place = apiManager.getPlaceDetails(id);
        if (place != null) {
            Gson gson = new GsonBuilder().create();
            place.setListCategory(gson.toJsonTree(place.getCategories()).getAsJsonArray().toString());
            place.setListMedias(gson.toJsonTree(place.getMedias()).getAsJsonArray().toString());
            place.setListReviews(gson.toJsonTree(place.getReviews()).getAsJsonArray().toString());
            place.setListLocation(gson.toJsonTree(place.getLocation()).getAsJsonArray().toString());
            places.add(place);
            place.save();
        }
    }

アドレスを取得しようとすると、NullPointerException. 私はsugarOrmのドキュメントに従いましたが、何か不足していますか?

誰にでも事前に感謝します。

4

1 に答える 1

0

AddressModel を PlaceModel に保存するには、save() メソッドを次のようにオーバーライドする必要があります。

if (address != null) {
    AdressModel model = new AdressModel(address);
    model.save;
    adress = model;
}
super.save();

それはきれいではありませんが、解決策の1つです。現在、ドキュメントに書かれているように、「1対1の関係はまだ機能していません」なので、回避策を見つける必要があります

于 2015-12-21T13:30:33.993 に答える