Используйте отображение атрибутов Hibernate в простом запросе SQL - PullRequest
0 голосов
/ 14 января 2011

Есть ли способ разрешить Hibernate заменить имена атрибутов сущностей в собственном запросе SQL (созданном Session.createSQLQuery())?

Я хотел бы создать запрос, в котором выбираются произвольные столбцы, которые не приводят кобъект Hibernate, похожий на этот

SELECT t1.attr1, t2.attr2, t3.attr3 WHERE t1.attr1 = 'foo' AND t2.attr2 = ...

с "attr1", "attr2", ... являющимися именами свойств Java, которые должны автоматически отображаться Hibernate.

видел SQLQuery.addEntity(), но, похоже, это работает с результирующим набором, а не с запросом.

Есть ли способ заменить имена атрибутов в запросе или любой инструмент, который позволяет мне легко получить доступ к сопоставлениям, сгенерированнымСпящий режим без необходимости проверять аннотации на сущности?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 января 2011

Если вы используете пользовательский NamingStrategy (или в этом случае стандартный), вы можете использовать класс NamingStrategy для генерации имен столбцов из имен свойств.

NamingStrategy namingStrategy = new DefaultNamingStrategy();
String yourPropertyName="fooBar";
String columnName = namingStrategy.propertyToColumnName(yourPropertyName);
0 голосов
/ 14 января 2011

Если нужно использовать SQL-запрос только для извлечения отдельных столбцов вместо полной сущности, такой запрос также можно выразить на HQL.Кортеж значений столбцов будет возвращен как Object[]:

Object[] tuple = s.createQuery("SELECT t.a, t.b, t.c FROM SomeEntity t WHERE ...").uniqueResult();
...