I have a class entity as below
@Entity
public class Task {
private String name;
private Integer ParentId;
private Integer userId;
@Ignore
I'm using Kotlin and I've had a similar problem, and below is how I solved it.
Add additional field with ?(question mark) for nullable, without @Ignore annotation
@Entity(tableName = "task")
data class Task (
val name: String,
val parentId: Integer,
val userId: Integer,
val noOfSubTask: Integer?
)
Add additional field(noOfSubTask in this case) to every query that selects Task in DAO.
@Dao
interface TaskDao {
@Query("SELECT *,(SELECT count(*) FROM Task b WHERE a._id = b.ParentId ) AS noOfSubTask FROM Task a ")
fun getTaskList(): LiveData>
@Query("SELECT *, NULL AS noOfSubTask FROM Task WHERE name = :name")
fun getTask(name: String): LiveData
...
}
If this does not work, you can try RawQuery that was recently introduced in Google I/O 2018.