Ошибка в моем запросе гибернации - PullRequest
2 голосов
/ 02 августа 2010

Здравствуйте, у меня есть этот HQL-запрос, и у меня возникает ошибка при запуске

Моя функция:

public ProprietaireInt getProprietaireInt(String codeImmeuble, String annee) {
   //Create connexion
   Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
   ProprietaireInt proprietaireInt = new ProprietaireInt();
   try{
         String query = "SELECT pi.siren,pi.codeSCI,pi.libSocieteInterne,pi.libSocieteNormalise,pi.codeDomainePilotage " +
                        "FROM ImmeubleFisc if" +
                        "JOIN proprietaireInt pi ON if.sirenProprietaire = pi.siren " +
                        "WHERE if.idImmeubleFisc.codeImmeuble = :codeImmeuble " +
                        "AND if.idImmeubleFisc.exerciceFiscal = :annee";
        Query q = null;
        q = session.createQuery(query);
        q.setString("codeImmeuble", codeImmeuble);
        q.setString("annee", annee);

        proprietaireInt = (ProprietaireInt) q.uniqueResult();
        session.flush();
    }
    catch (Exception e)
    {
       System.out.println(e.getMessage()+" "+e.getStackTrace());
    }
    return  proprietaireInt;
}

Моя ошибка:

2010-08-02 12: 12: 22,081 ОШИБКА ast.ErrorCounter (ErrorCounter.java:33) - строка 1: 156: неожиданный токен: proprietaireInt

1 Ответ

0 голосов
/ 02 августа 2010

Я не уверен, поддерживается ли JOIN ON (см. HHH-16 и HHH-620 ), но, предполагая, что ProprietaireInt является сущностью,Я предполагаю, что предложение JOIN должно быть (обратите внимание на первую букву в верхнем регистре):

JOIN ProprietaireInt pi ...

Кроме того, поскольку вы используете проекции (без выражения конструктора), вы получите Object[] в качестве результатаи я не думаю, что будет работать следующее:

proprietaireInt = (ProprietaireInt) q.uniqueResult();

Из справочной документации:

14.6.Предложение select

...

Запросы могут возвращать несколько объектов и / или свойств в виде массива типа Object[]:

select mother, offspr, mate.name
from DomesticCat as mother
    inner join mother.mate as mate
    left outer join mother.kittens as offspr

или какa List:

select new list(mother, offspr, mate.name)
from DomesticCat as mother
    inner join mother.mate as mate
    left outer join mother.kittens as offspr

Или - при условии, что класс Family имеет соответствующий конструктор - в качестве фактического безопасного типа объекта Java:

select new Family(mother, mate, offspr)
from DomesticCat as mother
    join mother.mate as mate
    left join mother.kittens as offspr

См. также

...