Поддерживает ли H2Dialect INNER JOIN <> ON <>? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть класс сущностей со многими именованными запросами с предложением INNER JOIN <> ON <>, когда я пытаюсь выполнить тест с использованием JUnit и в базе данных H2, я получаю это исключение:

org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join!

Запрос работает нормально, но кажется, что H2Dialect не поддерживает Inner Присоединяйтесь, только так:

INNER JOIN  c.persona p

Это мой NamedQuery:

@NamedQuery(name = "name", query = "SElECT NEW MyObject(p.firstName, "
                + "p.lastName, , tp.otherName, p.id, s.description, en.name, et.name , et.number,  e.firstName, "
                + "e.lastName, e.street, e.date ) "
                + "FROM TypeC c INNER JOIN c.typeP p " + "INNER JOIN TypeTP tp ON tp.code = p.codeTP "
                + "INNER JOIN TypeS s ON s.code   = c.codeS "
                + "INNER JOIN TypeEt et ON et.code   = c.codeET "
                + "INNER JOIN TypeEN en ON en.code = c.codeEN "
                + "INNER JOIN TypeI i ON i.code = c.codeI " + "INNER JOIN i.typeE e "
                + "WHERE c.number = :NUMBER " + "AND e.code = :CODE ")

Я использую JPA. Кто-нибудь может мне помочь? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я уже нашел, что пошло не так. TypeS, TypeET и TypeEN необходимо было включить в файл persistence.xml в тег «модуль постоянства» как

<class>co.com.myproject.persistence.entity.TypeS </class>
<class>co.com.myproject.persistence.entity.TypeET </class>
<class>co.com.myproject.persistence.entity.TypeEN </class>

и поместите необходимый код SQL для создания и заполнения таблиц в файлах create.sql и data.sql, используемых для создания базы данных h2 в памяти.

0 голосов
/ 26 апреля 2018
  1. Попробуйте JOIN вместо INNER JOIN , JOIN по умолчанию означает внутреннее соединение.
  2. Заменить H2 на другой диалект, если это возможно.
...