Следующий код хорошо работает с MySQL.
Но тот же код не работает при переключении базы данных в памяти HSQLDB (для модульного теста),
Запрос query = entityManager.createQuery ("ВЫБРАТЬ c ИЗ CartInvoiceEntity c WHERE c.invoiceId =: invoiceId");
query.setParameter ("invoiceId", cartInvoiceEntity.getInvoiceId ());
со следующим сообщением об ошибке:
org.hibernate.QueryParameterException: не удалось найти именованный параметр [invoiceId]
Проверив объект запроса при отладке, я обнаружил, что у объекта запроса есть поле параметров. При использовании MySQL этот параметр содержит invoiceId в его HashMap. Но при переключении на HSQLDB эта HashMap пуста - поэтому возникает исключение. Вопрос в том, почему HashMap пуст при использовании HSQLDB.
Ниже приведены соответствующие зависимости Maven.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.16</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.10</version>
<scope>test</scope>
</dependency>
Из иерархии зависимостей я вижу, что используется hibernate-jpa-2.0.api: 1.0.1.Final, и на него косвенно ссылаются JAR-файлы как hibernate-core, так и hibernate-entitymanager.
Любая помощь высоко ценится!