Hibernate сеанс возвращает NULL - PullRequest
1 голос
/ 09 марта 2012

Мой запрос гибернации возвращает ноль.Я сделал поиск в Интернете, но не смог найти ответ на этот конкретный вопрос.Вот запрос:

public T findById(Long id){
    return (T) sessionFactory.getCurrentSession().get(getPersistentClass(), id);
}

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

Hibernate: select quiz0_.QUIZ_ID as QUIZ1_3_0_, quiz0_.CATEGORY as CATEGORY3_0_, quiz0_.CREATED_DATE as CREATED3_3_0_, quiz0_.CREATOR_ID as CREATOR4_3_0_, quiz0_.DESCRIPTION as DESCRIPT5_3_0_, quiz0_.IS_IMMEDIATE_CORRECTION as IS6_3_0_, quiz0_.IS_MULTIPAGE as IS7_3_0_, quiz0_.NUM_OF_QUESTIONS as NUM8_3_0_, quiz0_.IS_PRACTICE_MODE as IS9_3_0_, quiz0_.TITLE as TITLE3_0_, quiz0_.IS_RANDOM as IS11_3_0_, quiz0_.RATING as RATING3_0_ from QUIZ quiz0_ where quiz0_.QUIZ_ID=?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Я сделал следующее, чтобы убедиться, что класс установлен, когда эта реализация дао расширена и используется (не полная реализация дао)

public abstract class GenericDaoImpl<T, I extends Serializable> implements GenericDao<T, I>{
        private Class<T> type;
        public GenericDaoImpl() {
            this.type = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        }
        public T find(I id) {
            Assert.notNull(id);
            return (T) getSessionFactory().getCurrentSession().get(getType(), id);
        }
}
0 голосов
/ 09 марта 2012

, если ваша таблица базы данных QUIZ сопоставлена ​​с T class

, попробуйте T.class вместо getPersistentClass()

или вы можете изменить T.class с именем вашей сущности

...