2013-12-15 11 views
0

У меня есть это поле, которое монтируется во время выполнения, подобно объединению других полей. Посмотрите:Использование поля переходных процессов в HQL

public String getNumeroCip() { 

     if (this.getId() == null) { 
      return "BR0000000000000"; 
     } 

     String idFormated = String.format("%011d", this.getId()); 
     return "BR" + idFormated + this.produto.getProduto().getSufixo(); 
    } 

Это мое поле, смонтированное во время выполнения. Я могу назвать это: bean.numeroCip.

Но если я пытаюсь использовать это в HQL, как это:

@NamedQuery(name = "Ar.findByNumeroArOrCip", query = "SELECT c FROM AR c " 
       + "JOIN FETCH c.produto " 
       + "JOIN FETCH c.situacao " 
       + "WHERE c.numeroAr = :numeroAr OR c.numeroCip = :numeroCip") 

я получил следующее сообщение об ошибке при попытке запуска сервера Tomcat:

Caused by: org.hibernate.HibernateException: Errors in named queries: Ar.findByNumeroArOrCip 

ответ

2

Переходные поля не могут быть использованы в HQL запросы. В итоге запрос HQL переводится в SQL-запрос, который затем выполняется в отношении базы данных. База данных не знает полей объектов Java.

+0

Итак, уникальное решение создает мое поле в базе данных. Так грустно. – Shelly

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