JPA универсальный репозиторий, не работает для определенного имени - PullRequest
0 голосов
/ 21 декабря 2018

Я создал конечную точку Jax-RS с интеграцией JPA, где я пытаюсь сделать запрос на основе общего имени, создать запрос, получить данные из базы данных.

@Override public Set<E> get() {
    EntityManager em = emf.createEntityManager();
    List<E> results = null;

    try {
        results = em.createQuery("SELECT e FROM " + entityClass.getSimpleName() + " e", entityClass)
                    .getResultList();
    } finally {
        em.close();
        return new HashSet<E>(results);
    }
}

когда я делаю экземпляр своего репозитория, я задаю имя класса и первичный ключ в базе данных SQL (обычно целое число)

public class BaseRepository<E, PK> implements CRUDOperations<E, PK> {

    private   Class<E> entityClass;
    protected EntityManagerFactory emf;
}

Я попробовал это для фиктивного класса, простострока, в ней работает нормально, я проверял ее в отладчике.

It gets the right class name and respective data in the database

enter image description here

однако, когда я пытаюсь сделать это для фактического класса, который я создал, я просто возвращаю нулевое значение (даже не пустой набор =

, наконец, я проверил базу данных, и таблицы имеют одинаковое имя вбазы данных, и это соответствует.

1 Ответ

0 голосов
/ 21 декабря 2018

Причина в том, что я не добавил конструктор без аргументов в класс сущностей, и поэтому ему не удалось получить набор сущностей из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...