Erro JPA TOP-LINK NamedQueries

Bom dia Galera .To com um problema de persistência com jpa.
Gera a seguinte exception.
You have attempted to set a parameter at position 1 which does not exist in this query string SELECT c FROM Categoria c WHERE c.codigo = :codigo.

minha namedQuery
@NamedQuery(name = "Categoria.findByCodigo", query = "SELECT c FROM Categoria c WHERE c.codigo = :codigo")

meu método
@Override
	public Categoria findByCodigo(long codigo) {
		Categoria categoria = (Categoria) em.createNamedQuery(
				"Categoria.findByCodigo").setParameter(1, codigo)
				.getSingleResult();
		return categoria;
	}

quando executo dá o erro, pelo que entendi ele diz que num existe o paramentro 1 na query string.
alguém sabe oque estou fazendo de errado.
estou usando top-link

se quiser manter a query desta maneira, troque o

por

se não me engano, qndo vc utiliza inteiros para setar os parâmetros, é necessário declará-los na query da seguinte maneira:

"SELECT c FROM Categoria c WHERE c.codigo = ?1"

beleza valeu funcionou aqui