使用Room在@Query结果中使用@Ignore字段

Kar*_*nga 7 android android-room

我有两个简单的locationhouses表。我希望能够获取location所有相关信息,并将其添加house到该查询中。该houseCount字段已标记,@Ignored因为我不希望保存此字段。但是,Room似乎无法像在指定为查询的返回对象类型的任何其他类中那样,使用该字段从查询中返回数据。

我的领域:

@Ignore
@ColumnInfo(name = EXTRA_COLUMN_LOCATION_HOUSE_COUNT)
public int houseCount;
Run Code Online (Sandbox Code Playgroud)

我的位置构造函数:

public Location(long id, String name, LatLng location, long defaultRent, Date synced, int houseCount) {...}
Run Code Online (Sandbox Code Playgroud)

我的查询:

SELECT locations.*, COUNT(DISTINCT houses.id) AS house_count FROM locations, houses WHERE locations.id = :id AND houses.location_id = :id
Run Code Online (Sandbox Code Playgroud)

警告:

Warning:(37, 14) The query returns some columns [house_count] which are not use by ug.karuhanga.logrealty.Models.Entities.Location. You can use @ColumnInfo annotation on the fields to specify the mapping.  You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned by the query: id, name, location, default_rent, synced, house_count. Fields in ug.karuhanga.logrealty.Models.Entities.Location: id, name, location, default_rent, synced.
Run Code Online (Sandbox Code Playgroud)

和错误:

Error:(33, 8) error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
Tried the following constructors but they failed to match:
Location(long,java.lang.String,ug.karuhanga.logrealty.Utils.LocationUtils.LatLng,long,java.util.Date,int) : [id : id, name : name, location : location, defaultRent : defaultRent, synced : synced, houseCount : null]
Run Code Online (Sandbox Code Playgroud)

Nis*_*hal 2

请参阅此以了解房间数据库中 @Ignore 的解决方法。 @Ignore 注释的房间数据库构建错误