У меня есть фрагмент кода, где я использую hibernate-запрос. Он работает нормально. когда огнь выполнить этот код второго времени запрос не уволен, как он собирается из кэша запросовКэш запросов Hibernate применим для собственных запросов?
Session session = hibernateFactory.openSession();
Query employeeQuery=session.createQuery("from Employee where employeeId=1");//line 1
employeeQuery.setCacheable(true);
Employee employee1=(Employee)employeeQuery.uniqueResult();
session.close();
Но как только я заменяю line1 в выше фрагменте кода с ниже строками я получаю исключение
Query employeeQuery=session.createSQLQuery("select * from Employee where employeeId=1");
Execption является
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at org.hibernate.type.TypeHelper.disassemble(TypeHelper.java:146)
at org.hibernate.cache.StandardQueryCache.put(StandardQueryCache.java:106)
at org.hibernate.loader.Loader.putResultInQueryCache(Loader.java:2434)
at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2321)
at org.hibernate.loader.Loader.list(Loader.java:2268)
является ли кэш запросов не применяется для собственных запросов?
Обновление: - Я думаю, кэш запросов применим для HQL не для собственного SQL. Но в документации на спящий режим его нигде не написано. Поэтому просто интересно, что я здесь ничего не пропал
Можете ли вы дать добавить скаляры попробовать? Из-за исключения он выглядит так, как будто его отказ при преобразовании результатов в объект. http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html – sgp15
Но addScalar требуется, когда я использую псевдоним столбца и хочу указать тип псевдонима. Если я не использую какие-либо псевдонимы, мне не нужно упоминать их правильно? –
Вы правы. В этом случае Hibernate должен использовать 'ResultSetMetadata'. Но опять же, если SQL-запросы не поддерживаются в кешировании, Hibernate не должен смотреть в кеш на первом месте. Похоже, что это нужно будет сделать с некоторыми причудами. Возможно, попробуйте скаляры. Какую версию Hibernate вы используете? – sgp15