jpa native

Hola a todos, estoy realizando una consulta en jpa pero en sqlnativo y no me reconoce el parametro.¿alguna idea, si me falta algo?
Esto se muestra en pantalla en una tabla.

Si Paso el parametro asi, y me muestra la pagina en blanco

public List<Object> getMetodo(int id){
 Query q = em.createNativeQuery("SELECT p.nombre,p.comentario from noticia p where p.id=:id");
q.setParameter("id", id);
   
         return  q.getResultList();
}

Si Paso el parametro de la siguiente manera, me muestra la tabla pero sin ningun elemento

public List<Object> getMetodo(int id){
 Query q = em.createNativeQuery("SELECT p.nombre,p.comentario from noticia p where p.id=?");
    q.setParameter(1, "id");
   return  q.getResultList();
}

Espero vuestra ayuda.gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Re: jpa native

 

La especificación de JPA dice que sólo JPQL tiene definidos los parámetros con nombre (depende de la implementación de JPA.), pero no así con SQL nativo, dónde sólo se definen los parámetros vía posición, como en JDBC.

Es decir:

Query q = em.createNativeQuery("SELECT p.nombre,p.comentario from noticia p where p.id=?");
q.setParameter(1, id);

Dependiendo la implementación de JPA, también es posible:

Query q = em.createNativeQuery("SELECT p.nombre,p.comentario from noticia p where p.id=(?1)");
q.setParameter(1, id);

Solucionado sqlnative

Gracias jpaul.me funciona perfecto.sus explicaciones me es de gran ayuda. Un saludo