2012-03-08 2 views
1

Мой запрос на спящий режим возвращает null. Я искал в Интернете, но не смог найти ответ на этот конкретный вопрос. Вот запрос:hibernate session get возвращает null

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=? 

Заранее благодарен.

+0

Уверены ли вы, отлаживая, что «id» действительно? – bvulaj

+0

Проблема была на самом деле в вызывающем методе, который возвращал значение null. В любом случае. Спасибо за все ваши ответы. –

ответ

0

если таблица QUIZ базы данных отображаются в T класса

попробовать T.class вместо getPersistentClass()

или вы можете изменить T.class с именем объекта

+0

T.class не работает, я думаю, потому что T не будет доступен во время выполнения. Кажется, что getPersistentClass() не проблема, как показано в запросе. Он идентифицирует правильный тип. –

+0

Недопустимый класс T.class. – bvulaj

1

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

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

Я сделал тот же шаблон, за исключением того, что я использовал вместо . Хотя, я не вижу, как это может повлиять на вышеупомянутую строку запроса, если правильный идентификатор передан sessionFactory.getCurrentSession(). Get (getPersistentClass(), id); . –

+0

Это странно. Правильно ли отображается класс Quiz? Вы пытались добавить отладочные комментарии немного повсюду, чтобы убедиться, что правильные данные переданы? – Sebastien

Смежные вопросы