Отношения и постоянные типы данных в ormlite - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь связать / работать отношения между этими четырьмя следующими классами как таблицы для базы данных ormlite,

Этот класс Item

@DatabaseTable(tableName = "item")
public class Item implements Serializable {

    @SerializedName("kind")
    @Expose
    @DatabaseField
    private String kind;
    @SerializedName("id")
    @Expose
    @DatabaseField
    private String id;
    @SerializedName("blog")
    @Expose
    @DatabaseField (foreign = true, foreignAutoRefresh = true)
    private Blog blog;
    @SerializedName("published")
    @Expose
    @DatabaseField
    private String published;
    @SerializedName("updated")
    @Expose
    @DatabaseField
    private String updated;
    @SerializedName("etag")
    @Expose
    @DatabaseField
    private String etag;
    @SerializedName("url")
    @Expose
    @DatabaseField
    private String url;
    @SerializedName("selfLink")
    @Expose
    @DatabaseField
    private String selfLink;
    @SerializedName("title")
    @Expose
    @DatabaseField
    private String title;
    @SerializedName("content")
    @Expose
    @DatabaseField
    private String content;
    @SerializedName("author")
    @Expose
    @DatabaseField (foreign = true, foreignAutoRefresh = true)
    private Author author;
    @SerializedName("replies")
    @Expose
    @DatabaseField (foreign = true, foreignAutoRefresh = true)
    private Replies replies;
    @SerializedName("labels")
    @Expose
    @DatabaseField(persisterClass = ArrayPersister.class)
    private String[] labels = null;

    public String getKind() {
        return kind;
    }

    public void setKind(String kind) {
        this.kind = kind;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Blog getBlog() {
        return blog;
    }

    public void setBlog(Blog blog) {
        this.blog = blog;
    }

    public String getPublished() {
        return published;
    }

    public void setPublished(String published) {
        this.published = published;
    }

    public String getUpdated() {
        return updated;
    }

    public void setUpdated(String updated) {
        this.updated = updated;
    }

    public String getEtag() {
        return etag;
    }

    public void setEtag(String etag) {
        this.etag = etag;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getSelfLink() {
        return selfLink;
    }

    public void setSelfLink(String selfLink) {
        this.selfLink = selfLink;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Author getAuthor() {
        return author;
    }

    public void setAuthor(Author author) {
        this.author = author;
    }

    public Replies getReplies() {
        return replies;
    }

    public void setReplies(Replies replies) {
        this.replies = replies;
    }

    public String[] getLabels() {
        return labels;
    }

    public void setLabels(String[] labels) {
        this.labels = labels;
    }

}

Блог класса

@DatabaseTable(tableName = "blog")
public class Blog implements Serializable {

    @SerializedName("id")
    @Expose
    @DatabaseField(generatedId = true)
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

Авторский класс

@DatabaseTable(tableName = "author")
public class Author implements Serializable {

    @SerializedName("id")
    @Expose
    @DatabaseField
    private String id;
    @SerializedName("displayName")
    @Expose
    @DatabaseField
    private String displayName;
    @SerializedName("url")
    @Expose
    @DatabaseField
    private String url;
    @SerializedName("image")
    @Expose
    @DatabaseField(dataType = DataType.SERIALIZABLE)
    private Image image;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Image getImage() {
        return image;
    }

    public void setImage(Image image) {
        this.image = image;
    }

}

Класс ответов

 @DatabaseTable(tableName = "replies")
public class Replies implements Serializable {

    @SerializedName("totalItems")
    @Expose
    @DatabaseField
    private String totalItems;
    @SerializedName("selfLink")
    @Expose
    @DatabaseField
    private String selfLink;

    public String getTotalItems() {
        return totalItems;
    }

    public void setTotalItems(String totalItems) {
        this.totalItems = totalItems;
    }

    public String getSelfLink() {
        return selfLink;
    }

    public void setSelfLink(String selfLink) {
        this.selfLink = selfLink;
    }

}

Элементы содержат Блог, Автор, Ответы, Эти три класса являются предметом проблемы, потому что я должен сделать связь междуих и класс предметов.Первая проблема, с которой я сталкиваюсь, состоит в том, что все поля идентификатора определены как «String» в четырех классах, и, конечно, первичный или внешний ключ не может быть определен как строка, я попытался преобразовать его в целое число, но получение идентификатора с сервера похоже начто "2632206540636403989", "6707328668304971444" слишком велико для целого числа

...