gpt4 book ai didi

java - 使用 room 从两个表中获取一个对象中的两个列表

转载 作者:行者123 更新时间:2023-12-02 10:08:16 26 4
gpt4 key购买 nike

我从我的服务器接收对象 MyResponse,其中包含两个列表:

data class MyResponse(
var field: List<Field>?,
var group: List<Group>?
)

然后我使用 ROOM 将其保存到两个不同的表中

@Dao
interface MyDao {
@Insert
fun saveField(field: List<SavedField>)

@Insert
fun saveGroup(group: List<SavedGroup>)
}

保存字段

@Entity
data class SavedField (
@ColumnInfo(name = "field")
var field: String
) {
@PrimaryKey(autoGenerate = true)
var id: Int = 0
}

已保存组

@Entity
data class SavedGroup(
@ColumnInfo(name = "group")
var group: String
) {
@PrimaryKey(autoGenerate = true)
var id: Int = 0
}

但是将数据写入数据库后如何再次获取MyResponse对象呢?当然,我可以为每个表使用两个@Query,但我认为这不是最好的解决方案。

最佳答案

检查以下代码可能会对您有所帮助。

解决方案1

@Query("SELECT * FROM Field")
List<FieldAndGroup> findFieldAndGroup();

public class FieldAndGroup {
@Embedded
Field field;

@Relation(parentColumn = "Field.feild_id", entityColumn = "Group.id")
//Relation returns a list
//Even if we only want a single Bar object ..
List<Group> group;

//Getter and setter...
}

解决方案2

@Query("SELECT Group.*, Field.* FROM Group INNER JOIN Field ON Field.grpId = Group.id")
List<GroupAndField> findAllGroupAndField();

public class GroupAndField {
@Embedded
Group group;

@Embedded
Field field;

//Getter and setter...
}

关于java - 使用 room 从两个表中获取一个对象中的两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com