用一个data class来接收多表查的结果
Epc.kt 表1
@Entity(
tableName = "epc",
indices = [Index(value = ["epcId"], unique = true)]
)
data class Epc(
/**
* ID
*/
@PrimaryKey(autoGenerate = true)
val _id: Int = 0,
/**
* 企业编码
*/
@ColumnInfo(name = "companyId")
var companyId: String = "",
/**
* EPC 唯一编码
*/
@ColumnInfo(name = "epcId")
var epcId: String = "",
/**
* EPC 唯一编码
*/
@ColumnInfo(name = "goodsId")
var goodsId: Int = 0,
/**
* EPC 唯一编码
*/
@ColumnInfo(name = "epcCode")
var epcCode: String = "",
/**
* epcUrl
*/
@ColumnInfo(name = "epcUrl")
var epcUrl: String = "",
) {
@Ignore
constructor():this(_id = 0, companyId="",epcId = "", goodsId= 0)
}
Goods.kt 表2
@Entity(
tableName = "goods",
indices = [Index(value = ["goodsId"], unique = true)]
)
data class Goods(
/**
* ID
*/
@PrimaryKey(autoGenerate = true)
val _id: Int = 0,
/**
* 企业编码
*/
@ColumnInfo(name = "companyId")
var companyId: String = "",
/**
* 产品 唯一编码
*/
@ColumnInfo(name = "goodsId")
var goodsId: Int = 0,
/**
* 产品 描述
*/
@ColumnInfo(name = "goodsDesc")
var goodsDesc: String = "",
) {
@Ignore
constructor():this(_id = 0, companyId="", goodsId= 0, goodsDesc="")
}
EpcData 接收结果类
data class EpcData(
/* @ColumnInfo(name = "goodsId")
var goodsid: String = "",*/
@Embedded
var epc: Epc? = null, // : Goods;
@Relation(parentColumn = "goodsId", entityColumn = "goodsId")
var epcList: List<Goods>? = null
) : Serializable {
@Ignore
constructor() : this(epc = null, epcList = null)
}
DAO操作
//芯片表Db
@Dao
interface EpcDao {
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
@Transaction
@Query("SELECT * FROM EPC INNER JOIN GOODS ON EPC.goodsId = goods.goodsId where EPC.companyId=:companyId")
fun getTableData(companyId: String): List<EpcData>?
}