У меня есть функция в MS SQL, например:
CREATE FUNCTION FOO (@param1 int,@param2 int)
RETURNS table
AS
RETURN (SELECT a, b, c
FROM MyTable
WHERE p = @param1
AND (@param2 IS NULL
OR x = @param2));
И класс сущностей, например:
@Entity
@SqlResultSetMappings=(value={
@SqlResultSetMapping(
name="fooMapping"
classes=@ConstructorResult(
targetClass=Foo.class,
columns= {
@ColumnResult(name="a", type=Long.class),
@ColumnResult(name="b", type=Long.class),
@ColumnResult(name="c", type=Long.class)}
)
@NamedNativeQuery(
name="getFoos",
query="CALL FOO(:param1, :param2) ORDER BY c",
resultSetMappings="fooMapping",
callable=true)
public class Foo {
...
}
Когда я пытаюсь вызвать функцию с помощью:
TypedQuery<Foo> query = em.createNamedQuery("getFoos", Foo.class);
query.setParameter("param1", param1);
query.setParameter("param2", null);
List<Foo> result = query.getResultList();
Тогда я получаю SQLServerException:
Неверный синтаксис рядом с'@P0'.
Что я делаю не так?
Спасибо взаранее за вашу помощь.