我有一个PostDAO,长这样。
现在,我希望在Post对象中的Embedded用户字段上填充一个名为“hasNewMusic”的子查询字段。尝试了上述方法,但不起作用,也不确定这是否是正确的做法。
@Dao
public interface PostDAO extends DAOTemplate<Post> {
@Query("SELECT * FROM posts order by time DESC")
LiveData<List<Post>> getPosts();
}
并且Post Pojo实体类是这样的。
@Keep
@Entity(tableName = "posts")
open class Post : Serializable, Cloneable {
@NonNull
@PrimaryKey
var id: String? = null
var text: String? = null
var time: Long = 0
var uid: String? = null
@Embedded
var user: User? = null
public override fun clone(): Post {
return super.clone() as Post
}
}
正如您所看到的,User 对象是 @Embedded 的。
而 User 的 DAO
@Dao
public interface UserDAO extends DAOTemplate<User> {
@Query("SELECT *,(SELECT sound_time FROM sounds WHERE sound_uid =:id AND " +
"(sound_time < strftime('%s', 'now'))) AS hasNewMusic " +
"FROM users WHERE user_uid = :id")
LiveData<User> getUser(String id);
}
用户模型类
@Keep
@IgnoreExtraProperties
@Entity(tableName = "users")
class User : ModelTemplate() {
@NonNull
@PrimaryKey
@ColumnInfo(name = "user_uid")
override var id: String? = null;
var name: String? = null
var icon: String? = null
var hasNewMusic: Boolean = false
}
现在,我希望在Post对象中的Embedded用户字段上填充一个名为“hasNewMusic”的子查询字段。尝试了上述方法,但不起作用,也不确定这是否是正确的做法。