【发布时间】:2018-04-11 11:15:32
【问题描述】:
我正在使用Room Persistence Library,我试图通过创建一个通用 DAO 类来避免样板代码,就像这样
@Dao
public interface PendingTaskDao<V> {
@Query("SELECT * FROM :tableName")
Maybe<List<V>> getAllEntitiesFrom(String tableName);
}
但是编译器抱怨<table or subquery> expected got : tableName。有没有办法创建通用 DAO,或者库必须以这种方式工作以防止SQL injection?
【问题讨论】:
-
您可能可以构建自己的实现,但不支持您想要的。
-
谢谢,很明显我必须复制粘贴很多:D
-
出现这种情况时,您必须问自己的第一个问题是“为什么我实际上需要这么多相同的查询”。应用程序将整个表数据集具体化到它们的内存中并不是一个好的设计,你可能在某个地方犯了设计错误。
-
事实上你是对的,我只有两个 :D,但 DAO 将是相同的,除了类的名称。
标签: java android android-room