0

Sugar ORM 1.3.1 を使用しており、次のオブジェクトを保存しようとしています。

   public class Article extends SugarRecord<Article> implements Serializable {
    @JsonProperty("Categories")
    private List<Category> categories = new ArrayList<Category>();
    @JsonProperty("Contents")
    private List<Content> contents = new ArrayList<Content>();
    @JsonProperty("Country")
    private CountryRelated country;
    @JsonProperty("Description")
    private String description;
    @JsonProperty("ExpiryDate")
    private String expiryDate;
    @JsonProperty("ExtraFields")
    private List<ExtraField> extraFields = new ArrayList<ExtraField>();
    @JsonProperty("Identifier")
    private int identifier;
    @JsonProperty("ImageURL")
    private String imageURL;
    @JsonProperty("Name")
    private String name;
    @JsonProperty("PortalID")
    private int portalID;
    @JsonProperty("PublishDate")
    private String publishDate;
    @JsonProperty("Region")
    private Region region;
    @JsonProperty("Related")
    private List<Related> related = new ArrayList<Related>();
    @JsonProperty("Newsbite")
    private boolean newsbite;
    @JsonProperty("ShareURL")
    private String shareURL;
    @JsonProperty("Tags")
    private List<Tag> tags = new ArrayList<Tag>();
    @JsonProperty("Type")
    private int type;
    public Article() {
    }


    public Article(List<Category> categories, List<Content> contents, List<ExtraField> extraFields, CountryRelated country, String description, String expiryDate, int identifier, String imageURL, String name, boolean newsbite, int portalID, String publishDate, Region region, List<Related> related, String shareURL, List<Tag> tags, int type) {
        this.categories = categories;
        this.contents = contents;
        this.extraFields = extraFields;
        this.country = country;
        this.description = description;
        this.expiryDate = expiryDate;
        this.identifier = identifier;
        this.imageURL = imageURL;
        this.name = name;
        this.newsbite = newsbite;
        this.portalID = portalID;
        this.publishDate = publishDate;
        this.region = region;
        this.related = related;
        this.shareURL = shareURL;
        this.tags = tags;
        this.type = type;
    }

    public List<Category> getCategories() {
        return categories;
    }

    public void setCategories(List<Category> categories) {
        this.categories = categories;
    }

    public List<Content> getContents() {
        return contents;
    }

    public void setContents(List<Content> contents) {
        this.contents = contents;
    }

    public List<ExtraField> getExtraFields() {
        return extraFields;
    }

    public void setExtraFields(List<ExtraField> extraFields) {
        this.extraFields = extraFields;
    }

    public CountryRelated getCountry() {
        return country;
    }

    public void setCountry(CountryRelated country) {
        this.country = country;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getExpiryDate() {
        return expiryDate;
    }

    public void setExpiryDate(String expiryDate) {
        this.expiryDate = expiryDate;
    }

    public int getIdentifier() {
        return identifier;
    }

    public void setIdentifier(int identifier) {
        this.identifier = identifier;
    }

    public String getImageURL() {
        return imageURL;
    }

    public void setImageURL(String imageURL) {
        this.imageURL = imageURL;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isNewsbite() {
        return newsbite;
    }

    public void setNewsbite(boolean newsbite) {
        this.newsbite = newsbite;
    }

    public int getPortalID() {
        return portalID;
    }

    public void setPortalID(int portalID) {
        this.portalID = portalID;
    }

    public String getPublishDate() {
        return publishDate;
    }

    public void setPublishDate(String publishDate) {
        this.publishDate = publishDate;
    }

    public Region getRegion() {
        return region;
    }

    public void setRegion(Region region) {
        this.region = region;
    }

    public List<Related> getRelated() {
        return related;
    }

    public void setRelated(List<Related> related) {
        this.related = related;
    }

    public String getShareURL() {
        return shareURL;
    }

    public void setShareURL(String shareURL) {
        this.shareURL = shareURL;
    }

    public List<Tag> getTags() {
        return tags;
    }

    public void setTags(List<Tag> tags) {
        this.tags = tags;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }
}

カテゴリ.クラス

public class Category extends SugarRecord<Category> implements Serializable {
    @JsonProperty("Identifier")
    private int identifier;
    @JsonProperty("Name")
    private String name;
public constructor + getters and setters }

Content.class と CountryRelated.class は同じ構造です

私がやった後article.save()、リストは保存されません。私は何か間違ったことをしているのですか、それともリストをまったく保存しませんか???

4

1 に答える 1

1

見るべきものはほとんどありません。

まず。データベースがリスト型または他のオブジェクト型の列を処理するとは思えません。あなたのコードを実行しようとしたとき、私は受け取りました:

Class cannot be read from Sqlite3 database. Please check the type of field categories(java.util.List)

これらは、データベースが格納できる型である必要があります。リストを文字列にシリアライズして、データベースに挿入してみてください。ゲッターとセッターでこれを試すことができます。セッターはオブジェクトのリストを取得してシリアル化された文字列に変換し、ゲッターはシリアル化された文字列を取得してオブジェクトのリストに変換します。

SugarOrm のインスタンスでは、別のテーブルを参照することができ、次のような関係が作成されます。

http://satyan.github.io/sugar/creation.html#why

「作成者」タイプは、データベース内の別のテーブルのレコードを参照しているだけであることに注意してください。

次に、通常、デフォルト コンストラクター内でデフォルト値を設定しようとします。次のようなもの:

... property declarations...

public Article() {
    this.name = "Default Value";
}

これがトラブルシューティングを完了するのに役立つことを願っています!

于 2015-06-08T15:04:24.723 に答える