Hibernate и как избежать смены имени модалов - PullRequest
6 голосов
/ 18 января 2012

Я использую Hibernate в течение нескольких лет, но не уверен насчет использования Query and Criteria.

Я понял, что одним из преимуществ Hibernate является управление именем поля в одном месте.Если у меня есть следующий код:

List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.between("weight", minWeight, maxWeight) )
.list();

Что если я поменяю "имя" Cat в java-объекте?

Даже при использовании refactor replace (как в Elipse) он не будетопределить элемент как нечто, что необходимо изменить!

Если это так, как вы поддерживаете имена полей в Java?

Ответы [ 2 ]

3 голосов
/ 18 января 2012

Я полагаю, что безопасные запросы типов не поддерживаются в специфических API Hibernate.JPA 2, однако, поддерживает его.Читать это: Динамические, безопасные для типов запросы в JPA 2.0

0 голосов
/ 20 июня 2013

В прошлом у меня была такая же проблема, и на самом деле нет способа иметь типизированную и устойчивую к рефакторам ссылку (изменить имя) поля в java, поэтому невозможно создать построитель запросов, который бы позволял это, ноя попытался создать реализацию построителя запросов, которая с помощью некоторого обходного пути пытается позволить вам написать безопасный тип и устойчивый к рефакторам запрос, его имя - ObjectQuery, и вы можете найти некоторую информацию о здесь .

дайте мне знать, если это решит ваш сценарий использования!

очевидно, не является стандартом, поэтому, если вы ищете что-то стандартное, лучше JPA Typesafe, но оно не имеет такой же мощности!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...