无法从通用特征中找到 ORMLite 注释
Cannot find ORMLite annotations from generic Trait
我有几个 ORM 类 可以与 ORMLite 一起使用。它们都有一个静态字段(DAO)和几个静态方法。我想将这三个移动到通用特征,如下所示:
trait ORM<K, V> {
private static Dao<K, V> dao = null
@Synchronized
static Dao getDao() {
dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), K)
}
}
这种方法行不通,会出现以下错误
java.lang.IllegalArgumentException: No fields have a DatabaseField annotation in class java.lang.Object
但是,如果我将方法更改为像这样的实例方法
trait ORM<K, V> {
private static Dao<K, V> dao = null
@Synchronized
Dao getDao() {
dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), this.getClass())
}
}
它工作正常,但作为实例方法没有多大意义。
知道如何让它在静态环境中工作吗?
Groovy 可以在静态上下文中使用 this
来引用 class 本身。这(没有双关语意)解决了问题。
@Synchronized
static Dao getDao() {
dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), this)
}
我有几个 ORM 类 可以与 ORMLite 一起使用。它们都有一个静态字段(DAO)和几个静态方法。我想将这三个移动到通用特征,如下所示:
trait ORM<K, V> {
private static Dao<K, V> dao = null
@Synchronized
static Dao getDao() {
dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), K)
}
}
这种方法行不通,会出现以下错误
java.lang.IllegalArgumentException: No fields have a DatabaseField annotation in class java.lang.Object
但是,如果我将方法更改为像这样的实例方法
trait ORM<K, V> {
private static Dao<K, V> dao = null
@Synchronized
Dao getDao() {
dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), this.getClass())
}
}
它工作正常,但作为实例方法没有多大意义。
知道如何让它在静态环境中工作吗?
Groovy 可以在静态上下文中使用 this
来引用 class 本身。这(没有双关语意)解决了问题。
@Synchronized
static Dao getDao() {
dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), this)
}