无法从通用Trait中找到ORMLite注释

时间:2016-04-05 15:48:47

标签: groovy ormlite

我有几个与ORMLite一起使用的ORM类。它们都有一个静态字段(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())
    }
}

它工作正常,但它作为实例方法没有多大意义。

有关如何使其在静态环境中工作的任何想法吗?

1 个答案:

答案 0 :(得分:0)

Groovy可以在静态上下文中使用this来引用类本身。这(没有双关语)解决了这个问题。

@Synchronized
static Dao getDao() {
    dao = dao ?:  DaoManager.createDao(DatabaseConnection.get(), this)
}