我有两个实体Mood,MoodNote,它们都是我从webservice上得到的1个json列表。
Json示例:
{
"id":1,
"name":"Sad",
"created_at":"2016-08-11 19:59:43",
"updated_at":"2016-08-16 20:15:17",
"deleted_at":null,
"symbol":"\\uD83D\\uDE22",
"notes":[
{
"id":409,
"content":"Recusandae necessitatibus numquam consectetur ut.",
"created_at":"2016-08-11 20:01:18",
"updated_at":"2016-08-11 20:01:18",
"deleted_at":null,
"count":0,
"pivot":{
"id_mood":1,
"id_modenote":409,
"created_at":"2016-08-11 20:01:19",
"updated_at":"2016-08-11 20:01:19"
}
},
{
"id":269,
"content":"Nulla laudantiums quia impedit.",
"created_at":"2016-08-11 20:01:18",
"updated_at":"2016-08-11 20:01:18",
"deleted_at":null,
"count":0,
"pivot":{
"id_mood":1,
"id_modenote":269,
"created_at":"2016-08-11 20:01:19",
"updated_at":"2016-08-11 20:01:19"
}
},
{
"id":204,
"content":"Incidunt doloremque",
"created_at":"2016-08-11 20:01:18",
"updated_at":"2016-08-11 20:01:18",
"deleted_at":null,
"count":0,
"pivot":{
"id_mood":1,
"id_modenote":204,
"created_at":"2016-08-11 20:01:19",
"updated_at":"2016-08-11 20:01:19"
}
},
]
}它们之间的关系是多对多的。
下面是entities类:
@Entity
public class Mood {
@Id
@SerializedName("id")
@Expose
private Long id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("created_at")
@Expose
private String createdAt;
@SerializedName("updated_at")
@Expose
private String updatedAt;
@SerializedName("deleted_at")
@Expose
private String deletedAt;
@SerializedName("symbol")
@Expose
private String symbol;
@ToMany
@JoinEntity(
entity = JoinMoodNote.class,
sourceProperty = "moodId",
targetProperty = "moodNoteId"
)
@SerializedName("notes")
@Expose
private List<MoodNote> notes = new ArrayList<>();
}情绪注释:
@Entity
public class MoodNote {
@Id
@SerializedName("id")
@Expose
private Long id;
@SerializedName("content")
@Expose
private String content;
@SerializedName("created_at")
@Expose
private String createdAt;
@SerializedName("updated_at")
@Expose
private String updatedAt;
@SerializedName("deleted_at")
@Expose
private String deletedAt;
@SerializedName("count")
@Expose
private int count;
}在this tutorial : LINK中,他们提到要这样做
@Entity
public class JoinMoodNote {
@Id private Long id;
private Long moodId;
private Long moodNoteId;
}在那之后,他们没有提到如何设置或获取数据
我需要任何ManyToMany的例子或它的用法提示。
我试着用翻新获得情绪,我得到了情绪列表。
// This only insert the moods, it doesnt insert the MoodNote list
moodDao.insertTx(moods);发布于 2016-10-25 05:34:41
我已经通过手动将记录添加到数据库中解决了这个问题:
moodDao.insertInTx(moodsList); // inserting all moods
daoSession.runInTx(new Runnable() {
@Override
public void run() {
// Foreach mood get the moodNotesList and add it to database
for (Mood mood : moodsList) {
long moodId = mood.getId();
for (MoodNote note : mood.getMoodNotes()) {
note.setMoodId(moodId); // nothing but set the moodId of the MoodNote to keep the relation
moodNoteDao.insert(note); // insert the moodNote to database one by one
}
}
}
});这不是完美的解决方案,但它解决了我的问题。
如果我找到了更好的解决方案,我会把它贴回这里,如果你有更好的解决方案,请贴出来作为答案,这样我们就可以学习它了。
谢谢。
https://stackoverflow.com/questions/38999573
复制相似问题