Проблема при создании DAO универсальной модели в ORMlite - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть 3 класса, Professional, Doctor и Blog, как описано ниже:

public class Professional {
}

@DatabaseTable(tableName = "doctors", daoClass = DoctorDao.class)
public class Doctor extends Professional {
    @DatabaseField(columnName = "id", generatedId = true)
    Long id;

    @DatabaseField(columnName = "name")
    String name;

    public Doctor() {

    }
}

@DatabaseTable(tableName = "blogs", daoClass = BlogDao.class)
public class Blog<T> {
    @DatabaseField(columnName = "id", generatedId = true)
    Long id;

    @DatabaseField(columnName = "title")
    String title;

    @DatabaseField(columnName = "blog_of", foreign = true, canBeNull = false, foreignAutoCreate = true)
    T author;
}

Я не могу создать DAO для класса Blog, так как не могу вызвать конструктор с универсальным параметром для класса Blog,DAO для блога:

public interface BlogDaoInterface extends Dao<Blog<? extends Professional>, Long> {
}

public class BlogDao extends BaseDaoImpl<Blog<? extends Professional>, Long> implements BlogDaoInterface {

    public BlogDao(ConnectionSource connectionSource) throws SQLException {
        super(connectionSource, Blog<? extends Professional>.class);
    }
}

ОШИБКА: ormlite не может создать DAO класса Blog (т.е. BlogDao).Код не компилируется успешно.

Я использовал ormlite для создания таблиц по следующей строке кода:

TableUtils.createTableIfNotExists(connectionSource, Blog.class);

Но Gradle показывает следующую ошибку:

невозможно выбрать из параметризованного типа

в классе BlogDao в следующей строке его конструктора:

super(connectionSource, Blog<? extends Professional>.class);

Что такоеправильный способ сделать это?

...