使用游标连接列表项中的多个表

时间:2016-03-06 18:29:25

标签: java android cursor ormlite

我有一个问题。我有一个包含文本数据的注释,用户可以添加与该注释相关的多张照片。注释和照片存储在单独的表中,注释和照片的数据模型都使用与两个对象相关的数据扩展抽象对象。除此之外,“note”表是“photo”对象的外键。

两个对象都扩展的抽象类:

public abstract class SyncObject implements Parcelable {

public static final String ID = "_id";
public static final String DATE = "date";
public static final String IS_SAVED_TO_CLOUD = "isSavedToCloud";
public static final String TIME_STAMP = "timeStamp";
public static final String IS_DELETED = "isDeleted";

@DatabaseField(id = true, index = true, canBeNull = false, columnName = ID)
public String id;

@DatabaseField(columnName = DATE)
public String date;

@DatabaseField(columnName = IS_SAVED_TO_CLOUD)
public boolean isSavedToCloud;

@DatabaseField(columnName = TIME_STAMP)
public String timeStamp;

@DatabaseField(columnName = IS_DELETED)
public boolean isDeleted; }    

这是笔记课程:

public class Note extends SyncObject implements Parcelable {

public static final String TITLE = "title";
public static final String DESCRIPTION = "description";

@DatabaseField(columnName = TITLE)
public String title;

@DatabaseField(columnName = DESCRIPTION)
public String description; }

照片课:

public class Photo extends SyncObject{

public static final String FIELD_REF = "note";
public static final String PHOTO = "photo";
public static final String THUMBNAIL = "thumbnail";

@DatabaseField(columnName = PHOTO)
public String photoUrl;

@DatabaseField(columnName = THUMBNAIL)
public String thumbnailUrl;

@DatabaseField(columnName = FIELD_REF, canBeNull = false, foreign = true, foreignAutoRefresh = true)
public Note note;

所以,在这里开始吧。 我想在列表中显示与note相关的照片,但是使用连接表获取光标会产生具有相同字段的数据,并且通过这些字段查询没有任何意义。基本上,我想在列表中显示一张带有一张照片的笔记。

我尝试使用2个游标执行此操作,但没有任何成功。我是否在加入游标或首先创建游标时出错?

我有Content Provider创建2个游标,一个用于记事本,一个用于照片数据。我能够在一个列表中显示数据。有没有办法用一个光标显示来自多个(注释和照片)表的数据?

使用相同字段创建带有rawQuerry创建表的游标,并且在列表中显示注释时,我不需要SyncObject中的字段用于照片。

我使用的查询:Cursor c = db.rawQuery("SELECT * FROM note INNER JOIN photos ON note = photos.note WHERE photos.note = note", null);

提前致谢,如果有人需要更多信息,请更新此信息,谢谢!

0 个答案:

没有答案