Pessoal, estou realizando uma consulta JPQL buscando uma entidade que possui chave composta.
E além disso a chave é formada por 2 objetos.
Tentei de várias formas e não estou obtendo sucesso, acredito que é por causa da chave ser feita com objetos.
Alguém já passou por isso ?
Segue os códigos:
Entitidade Visualizacao@Entity
@Table(name="sis10_visualizacao")
public class Visualizacao implements Serializable{
private static final long serialVersionUID = 1L;
@Id
private VisualizacaoID id ;
@OneToOne
private Hierarquia hierarquia;
//getters e setters omitidos
}
@Embeddable
public class VisualizacaoID implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne
private Usuario usuario;
@ManyToOne
private Perfil perfil;
//getters e setters omitidos
}
@Entity
@Table(name="sis09_usuario")
public class Usuario implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="usua_id")
private int id;
//omitido o restante da classe
}
Segue minha instrução para recuperar somente os usuarios:
public ArrayList<Visualizacao> obterListVisualizacao(Usuario usuario){
ArrayList<Visualizacao> listVisualizacao = null;
if ( usuario.getId() == 0 ){
throw new IllegalArgumentException("O usuário informado está inválido.");
}
Query q = manager.createQuery("SELECT h FROM visualizacao as h WHERE h.id.usuario.id =:usuario");
q.setParameter("usuario", usuario.getId());
listVisualizacao = (ArrayList<Visualizacao>) q.getResultList();
return listVisualizacao ;
}