【发布时间】:2021-09-13 22:41:58
【问题描述】:
从 Android Room 2.3.0 开始,我们可以在 @Entity 类上使用枚举字段,而无需为其编写 @TypeConverter。 但是如何在 @Query 中使用这些值呢?
假设我们需要列出所有“已批准”的项目:
@Entity(tableName = "items")
public class Item {
//...
public Status status;
//...
}
public enum Status {
APPROVED,
DENIED
}
@Dao
public interface ItemDao {
//...
@Query("SELECT * FROM items WHERE status = ???????")
List<Item> getAllApprovedItems();
//...
}
当然,我可以为我的枚举设置一个值,并为它创建一个类型转换器,如下所示:
APPROVED(1),
DENIED(2)
然后进行查询
@Query("SELECT * FROM items WHERE status = 1")
但我认为这很容易出错。
有没有办法在@Query 中使用枚举值? 更重要的是,该值将在编译时评估?
【问题讨论】:
标签: android enums android-room