Как в JPQL получить доступ к свойствам именованных параметров?

Я использую Hibernate 3.5.4-Final.

Я хочу передать объект в качестве параметра именованного запроса, а затем получить доступ к сохраненному свойству этого именованного параметра в этом запросе. Я хочу сделать это:

@NamedQuery(name = "hello", query = "SELECT p FROM WorkPackage p WHERE p IN (:workPackage).relatedWorkflows")

Проблема ближе к концу запроса, в

(:workPackage).relatedWorkflows

что приводит к тому, что Hibernate генерирует исключение QuerySyntaxException во время развертывания. Удаление скобок не помогает; Я оставил их для ясности. Есть ли способ обойти это, или мне придется делать это программно?


person Nick    schedule 06.07.2011    source источник
comment
FWIW отлично работает в DataNucleus. Параметр может быть любого типа, и, следовательно, на поля можно ссылаться так же, как и на поля объекта-кандидата.   -  person DataNucleus    schedule 06.07.2011


Ответы (1)


Вы не можете. Вы должны передать само значение свойства в запрос:

@NamedQuery(name = "hello", query = "SELECT p FROM WorkPackage p WHERE p IN (:relatedWorkflows)")

query.setParameterList("relatedWorkflows", workPackage.getRelatedWorkflows());
person JB Nizet    schedule 06.07.2011