问题描述
在我的应用程序中,我有一个包含 2 个表 Messages 和 MessageQueue 的数据库。该架构的设计使每条消息“包含”许多 MessageQueue。所以我们是一对多的关系。
@Entity(tableName = "messages")
data class Message(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "client_message_id")
var clientMessageId: Long,@ColumnInfo(name = "message_id")
var messageId: String,@ColumnInfo(name = "body",defaultValue = "")
var body: String,@ColumnInfo(name = "msg_type")
var msgType: Int = 0,@ColumnInfo(name = "message_date",defaultValue = "")
var messageDate: String,@ColumnInfo(name = "is_income")
var isIncome: Int,@ColumnInfo(name = "file_status")
var fileStatus: Int = 0
)
@Entity(tableName = "messageQueue")
data class MessageQueue(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "message_queue_id")
var messageQueueId: Long,@ColumnInfo(name = "client_message_id")
var clientMessageId: Long,@ColumnInfo(name = "is_header")
var isHeader: Int,@ColumnInfo(name = "status")
var status: Int
)
现在我有一个名为 MsgWithMsgq 的 Relation Pojo
data class MsgWithMsgq(
@Embedded
var messageQueue: MessageQueue,@Relation(parentColumn = "client_message_id",entityColumn = "client_message_id")
var message: Message
)
使用上述 pojo,因此我可以将 Message 与 MessageQueue.isHeader = 1 的 MessageQueue 一起使用。 这适用于我所有的查询,除了一个。
有一个查询,我想在许多字段中应用过滤器。
@Query("""Select *
from messagequeue
inner join messages on messages.client_message_id = messagequeue.client_message_id
where messages.msg_type = 1
and messages.is_income = 1
and messages.file_status = 1
and messagequeue.status = 5 or messagequeue.status = 7
and messagequeue.is_header = 1""")
fun getPendingFileMessages(): List<MsgWithMsgq>
上述查询有效,但它忽略了约束 and messages.file_status = 1
并获取所有可能的文件状态。
这里到底发生了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)