//我想用这段代码把说说表以及图、文两个子表保存在数据库里
for(int i=0;i<mCirclePeer.size();i++)
{
mCirclePeerRecord = mCirclePeer.get(i);
mImage = mCirclePeerRecord.getImageList();
mContent = mCirclePeerRecord.getCharsList();
for(int j=0;j<mCirclePeerRecord.getImageList().size();j++)
{
mImage.get(j).setAnnID(mCirclePeerRecord.getAnnID());
DbService.getInstance(CirclePeerActivity.this).saveImage(mImage.get(j));
mCirclePeer.get(i).setImageList(mImage);
}
for(int j=0;j<mCirclePeerRecord.getCharsList().size();j++)
{
mContent.get(j).setAnnID(mCirclePeerRecord.getAnnID());
DbService.getInstance(CirclePeerActivity.this).saveContent(mContent.get(j));
mCirclePeer.get(i).setContentList(mContent);
}
DbService.getInstance(CirclePeerActivity.this).saveCirclePeer(mCirclePeer.get(i));
}
//在没有网络的时候用这段代码从数据库里读取保存的表
mCirclePeer = DbService.getInstance(this).loadAllCirclePeer();
for(int k=0;k<mCirclePeer.size();k++)
{
mImage = DbService.getInstance(this).loadImage();
mContent = DbService.getInstance(this).loadContent();
mCirclePeer.get(k).setImageList(mImage);
mCirclePeer.get(k).setContentList(mContent);
}
但是我没有得到预期效果,有人能帮我解答这个问题吗?
greendao多表互联的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-02 22:30关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
Greendao是一个Android框架,用于将Java对象映射到SQLite数据库。它提供了许多功能来处理嵌套的对象模型,包括关联关系。
如果你想要在一个类中创建一个包含其他类的方法(例如,
getImageList()和getCharsList()),你可以这样做:public class CirclePeer { public List<Image> getImageList() { return imageList; } public void setImageList(List<Image> imageList) { this.imageList = imageList; } public List<Character> getCharsList() { return charsList; } public void setCharsList(List<Character> charsList) { this.charsList = charsList; } }然后,在另一个类中使用这些方法:
public class Image { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Character { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }这样,你就可以在你的类中定义这些方法了。
关于如何处理嵌套的关系,你可以考虑使用Greendao提供的
@OneToOne注解来实现一对一的关系。例如,如果你想为CirclePeer实体定义一对一的关系,可以这样做:@Entity(tableName = "circle_peers") public class CirclePeer extends DaoSession.CirclePeer implements OneToOneDao<CirclePeer, Image> { @Id(autoincrement = true) public int getId() { return mId; } @Column(name = "image_id") public int getImageId() { return mImageId; } @Column(name = "image_name") public String getImageName() { return mImageName; } @ManyToOne(OneToOneDao.class) @JoinColumn(name = "image_id", referencedColumnName = "id") public Image getImage() { return mImage; } @Override public void save(Image image) { mImage = image; super.save(); } @Override public Image load(int id) throws SQLException { return super.load(id); } }注意:这只是一个示例,实际应用中可能需要根据实际情况进行调整。
解决 无用评论 打赏 举报