Android数据库流,许多检索错误
问题很简单。我有一个模型:Android数据库流,许多检索错误,android,database,where-clause,dbflow,Android,Database,Where Clause,Dbflow,问题很简单。我有一个模型: @Table(database = AppSazakDBModel.class) @ManyToMany(referencedTable = PageDeclaration.class) public class Category extends BaseModel { @Column @PrimaryKey public int Id; @Column public String name; @Column
@Table(database = AppSazakDBModel.class)
@ManyToMany(referencedTable = PageDeclaration.class)
public class Category extends BaseModel {
@Column
@PrimaryKey
public int Id;
@Column
public String name;
@Column
public String bannerAddress;
@Column
public int minAppSazakVersion;
private PageDeclaration[] pageDeclarations;
public PageDeclaration[] getPageDeclarations(){
if (pageDeclarations == null || pageDeclarations.length < 1){
Category_PageDeclaration[] category_pageDeclarations = (Category_PageDeclaration[]) (new Select().from(Category_PageDeclaration.class).where(Category_PageDeclaration_Table.category_Id.eq(Id)).queryList().toArray());
ArrayList<PageDeclaration> listToReturn = new ArrayList<>();
for (Category_PageDeclaration category_pageDeclaration:category_pageDeclarations) {
listToReturn.add(category_pageDeclaration.getPageDeclaration());
}
pageDeclarations = (PageDeclaration[])(listToReturn.toArray());
}
return pageDeclarations;
}
public Category setId(int id) {
Id = id;
return this;
}
public Category setName(String name) {
this.name = name;
return this;
}
public Category setPageDeclarations(PageDeclaration[] pageDeclarations) {
this.pageDeclarations = pageDeclarations;
return this;
}
public Category setBannerAddress(String bannerAddress) {
this.bannerAddress = bannerAddress;
return this;
}
public Category setMinAppSazakVersion(int minAppSazakVersion) {
this.minAppSazakVersion = minAppSazakVersion;
return this;
}
}
正如我们所看到的,我现在也开始建立这种关系
但当我想从关系中检索数据时
public PageDeclaration[] getPageDeclarations(){
if (pageDeclarations == null || pageDeclarations.length < 1){
Category_PageDeclaration[] category_pageDeclarations = (Category_PageDeclaration[]) (new Select().from(Category_PageDeclaration.class).where(Category_PageDeclaration_Table.category_Id.eq(Id)).queryList().toArray());
ArrayList<PageDeclaration> listToReturn = new ArrayList<>();
for (Category_PageDeclaration category_pageDeclaration:category_pageDeclarations) {
listToReturn.add(category_pageDeclaration.getPageDeclaration());
}
pageDeclarations = (PageDeclaration[])(listToReturn.toArray());
}
return pageDeclarations;
}
但是在这条线上
Category_PageDeclaration[] category_pageDeclarations = (Category_PageDeclaration[]) (new Select().from(Category_PageDeclaration.class).where(Category_PageDeclaration_Table.category_Id.eq(Id)).queryList().toArray());
当我将其替换为:
Category_PageDeclaration[] category_pageDeclarations = (Category_PageDeclaration[]) (new Select().from(Category_PageDeclaration.class).queryList().toArray());
每件事都很好,所以我认为问题应该是where子句
我认为DBFlow开发人员应该改进关于多对多注释的文档
你知道怎么修理吗
TG
java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.cclever.appsazak/ir.cclever.appsazak.PagesEditorActivity}: com.raizlabs.android.dbflow.structure.InvalidDBConfiguration: Model object: ir.cclever.appsazak.data.model.Category is not registered with a Database. Did you forget an annotation?
Category_PageDeclaration[] category_pageDeclarations = (Category_PageDeclaration[]) (new Select().from(Category_PageDeclaration.class).where(Category_PageDeclaration_Table.category_Id.eq(Id)).queryList().toArray());
Category_PageDeclaration[] category_pageDeclarations = (Category_PageDeclaration[]) (new Select().from(Category_PageDeclaration.class).queryList().toArray());