2016-12-07 3 views
0

У меня есть две простые модели, и я пытаюсь создать простой OneToMany между ними, поскольку я новичок в использовании этой библиотеки, я не могу использовать библиотечную документацию, моя основная модель :Android создать простую связь OneToMany с DBFlow

@Table(database = AppDatabase.class) 
public class ModelChannelPosts extends BaseModel { 
    @PrimaryKey 
    private int id; 

    @Column 
    private String channelId; 

    @Column 
    private List<ModelVideos> channel_video_containers; 

    @Column 
    private String createdAt; 

    @Column 
    private String updatedAt; 


    public ModelChannelPosts() { 
    } 

    @OneToMany(methods = {OneToMany.Method.ALL}, variableName = "channel_video_containers") 
    public List<ModelVideos> getVideos() { 
     if (channel_video_containers == null || channel_video_containers.isEmpty()) { 
      channel_video_containers = new Select() 
        .from(ModelVideos.class) 
        .where(ModelVideos_Table.channelId.eq(id)) 
        .queryList(); 
     } 
     return channel_video_containers; 
    } 

    ... 
} 

и имеет много ModelVideos, то ModelVideos принадлежит ModelChannelPosts:

@Table(database = AppDatabase.class) 
public class ModelVideos extends BaseModel { 

    @PrimaryKey 
    private int     id; 

    @Column 
    private String     fileName; 

    @Column 
    private String     videoLength; 

    @Column 
    private int     channelId; 

    public ModelVideos() { 
    } 

    ... 
} 

в ModelChannelPosts_Table файл model.channel_video_containers неизвестно и я получаю эту ошибку:

Error:(168, 48) error: <identifier> expected 

как я могу реализации OneToMany для них? (Сделать отношения корабль между channel_video_containers на ModelChannelPosts и channelId на ModelVideos?

ответ

0

Не знаете, какую версию DBFlow вы используете, но при добавлении @ModelContainer аннотацию ModelChannelPosts может помочь вам

+0

Я использую последнюю версию DBFlow и '' @ModelContainer идентификатор неизвестного для импорта, что –

0

Можете ли вы проверить снова Удалить «@column» из следующего сегмента кода:

@Column 
private List<ModelVideos> channel_video_containers; 

Примечание: Возможно, вы заметили ошибку, которую не установили для channel_video_containers, поэтому создайте ее.

И введите внешний ключ в ModelVideos, так как многие ModelVideos могут принадлежать одиночным ModelChannelPosts. например

В классе ModelVideos

@Column 
@ForeignKey(saveForeignKeyModel = false) 
ModelChannelPosts modelChannelPosts; 

Отдых выглядит нормально. Я сохраняю в виду версию DBFlow = 4.0.0-beta3 (которая является последней версией по умолчанию)

0

Возможно, это будет поздно, но это было бы полезно для других разработчиков. один ко многим Relation будет как этого

@Table(database = AppDatabase.class) 
public class ModelChannelPosts extends BaseModel { 

    @PrimaryKey 
    private int id; 

    @Column 
    private String channelId; 

    private List<ModelVideos> channel_video_containers; 

    @Column 
    private String createdAt; 

    @Column 
    private String updatedAt; 


    public ModelChannelPosts() { 
    } 

    @OneToMany(methods = {OneToMany.Method.ALL}, variableName = "channel_video_containers") 
    public List<ModelVideos> getVideos() { 
     if (channel_video_containers == null || channel_video_containers.isEmpty()) { 
      channel_video_containers = new Select() 
        .from(ModelVideos.class) 
        .where(ModelVideos_Table.modelChannelPosts_id.eq(id)) 
        .queryList(); 
     } 
     return channel_video_containers; 
    } 

    ... 
} 

и ModelVideos класс будет как

@Table(database = AppDatabase.class) 
public class ModelVideos extends BaseModel { 

    @PrimaryKey 
    private int id; 

    @Column 
    private String fileName; 

    @Column 
    private String videoLength; 

    @Column 
    private int channelId; 

    @ForeignKey(stubbedRelationship = true) 
    ModelChannelPosts modelChannelPosts; 

    public ModelVideos() { 
    } 

    ... 
} 
Смежные вопросы