I have a function in MS SQL like:
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));
And a Entity Class like:
@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 {
...
}
When I try to call the function with:
TypedQuery<Foo> query = em.createNamedQuery("getFoos", Foo.class);
query.setParameter("param1", param1);
query.setParameter("param2", null);
List<Foo> result = query.getResultList();
Then I get SQLServerException:
Incorrect syntax near '@P0'.
What do I do wrong?
Thank you in advance for your help.