Вопрос

Есть ли способ использовать Hibernate с именем запросов в Граале, используя HQL?

Я читал о них в Использовать книгу с гибернатом, и подумал, есть ли способ использовать их в Граале.

Названные запросы включены вместе с классовыми отображениями в <class-name>.hbm.xml отображение файлов как SO:

<query name="com.oreilly.hh.tracksNoLongerThan">
   <![CDATA[
         from Track as track
           where track.playTime <= :length
     ]>
</query>

Теперь я уверен, что <class-name>.hbm.xml Файл отображения гиберната может быть включен и интегрирован в конфигурацию Grails Gorm как это указано здесь что hibernate.cfg.xml который включает в себя Файл отображения гиберната может использоваться в Граале.

В старом спячке и Java можно получить доступ таким образом:

    ...
Query query = session.getNamedQuery(
                "com.oreilly.hh.tracksNoLongerThan");

query.setTime("length", length);
return query.list();
    ...

Но как можно получить доступ к этим HQL с именем запросов от Grails?

Причина, по которой я спрашиваю, заключается в том, что я хотел бы иметь возможность взять унаследованную базу данных и отобразить ее с некоторыми объектами для использования в Граале и хранить названные запросы вместе с отображениями.

Это было полезно?

Решение

Самый простой способ - с withSession Метод на любом классе домена, например,

SomeDomainClass.withSession { session ->
   Query query = session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
   query.setTime 'length', length
   query.list()
}

или более компактно с использованием цепочки методов:

SomeDomainClass.withSession { session ->
   session.getNamedQuery('com.oreilly.hh.tracksNoLongerThan')
      .setTime('length', length)
      .list()
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top