Problema em select com jpql

Boa tarde pessoal,

Estou desenvolvendo um aplicaçao web em java usando hibernate com jpa, só que estou com serios problemas para fazer uma consulta ha uma tabela aluno que tenho no BD.

Tenha um tabela aluno que tem a COLUNA com nome MATRICULA(tipo String) que recebe as informações ATIVO OU INATIVO, so que quando vou retornar somente os alunos INATIVO da o seguinte erro:
Not all named parameters have been set: [inativa] [Select a FROM Aluno a WHERE a.matricula LIKE :inativa ]

segue as formas que ja tentei:

public List<Aluno> listando(){
		String jpql = "Select a FROM Aluno a WHERE a.matricula LIKE :inativa ";
		Query query = entityManager.createQuery(jpql);
		return query.getResultList();
}

public List<Aluno> listando(){
		String jpql = "Select a FROM Aluno a WHERE a.matricula LIKE :inativa ";
		Query query = entityManager.createQuery(jpql);
		query.setParameter("inativa",matricula);
		return query.getResultList();
}

public List<Aluno> listando(){
	String jpql = "Select aluno FROM Aluno aluno WHERE a.matricula = :inativa ";
	Query query = entityManager.createQuery(jpql);
	return query.getResultList();
}

e nenhuma destas tentativas não deram certo?

a forma do meio parece correta.

qual o problema com ela?

nao deveria afetar mas tenta usar SELECT maiuscula tb.

a partir da documentacao isso aqui deveria funcionar : http://docs.oracle.com/javaee/6/tutorial/doc/bnbrg.html

public List findWithName(String name) {
    return em.createQuery(
        "SELECT c FROM Customer c WHERE c.name LIKE :custName")
        .setParameter("custName", name)
        .getResultList();
}
1 curtida

Primeiro, está informando que vc não passou nenhum valor para :inativa
Parece que você está confundindo, no seu select esse :inativa é como se fosse um alias, e não o valor a ser buscado.

Na segunda forma que você tentou, nessa linha você passa uma string para substituir esse alias:

query.setParameter("inativa",matricula);

Como vc disse que quer os inativos, faz assim:

query.setParameter("inativa","inativo");

Para não confundir você pode trocar esse :inativo por :situacao

public List<Aluno> listando()
{
     String jpql = "Select a FROM Aluno a WHERE a.matricula LIKE :situacao";
     Query query = entityManager.createQuery(jpql);
     query.setParameter("situacao","inativo");
     return query.getResultList();

Recomendo você mudar esse campo para boolean (true ou false).