Dexa eu tentar explicar o que quero fazer mas estou apanhando…
Tenho um listbox que é populado com os dados do BD de uma tabela “dataset_inicial”… Quero fazer uma busca no banco na tabela “imagem_inicial” de todas as imagens cujo paramentro é “dataset_inicial” que eu escolher no meu listbox… (relacionamento de 1:N)
A verdade é que eu não sei como fazer, e fui tentando de varias maneiras, pesquisei… mas não consegui… ae venho mais uma vez pedir a ajuda de voces :oops:
Se alguem puder me ajudar, agradeço desde já!
o MB
@ManagedBean
@ViewScoped
public class ConsultaImagemBean {
@ManagedProperty(value="#{entityManagerBuilder.entityManager}")
private EntityManager entityManager;
private Imagem_inicial imagem_selecionado;
private List<Imagem_inicial> lista;
private boolean todos_diretorios;
public void Pesquisar(){
try {
if (todos_diretorios == true){
lista = getEntityManager().createQuery("from Imagem_inicial").getResultList();
} else {
//O PROBLEMA ESTA AQUI! NAO SEI COMO FAZER ;S
Query query = getEntityManager().createQuery("select im from Imagem_inicial im where im.dataset_ini = :dataset_ini");
query.setParameter("dataset_ini", /*O QUE POR AQUI PRA DAR CERTO?*/);
lista = query.getResultList();
}
} catch (Exception e) {
// TODO: handle exception
}
}
//GETTERS E SETTERS
o Model
@Entity
@Table(name="imagem_inicial")
public class Imagem_inicial implements Serializable {
private static final long serialVersionUID = 6620894928054638720L;
@Id
@SequenceGenerator(name="imageini", sequenceName="imagem_inicial_id_imageini_seq",allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="imageini")
@Column(name="id_imageini", unique=true, nullable=false)
private Integer idImageini;
@NotNull
@Column(name="caminho")
private String caminho;
@NotNull
@Column(name="nome_imagem")
private String nome_imagem;
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_datasetini")
private Dataset_inicial dataset_ini;
//GETTERS E SETTERS
Altere seu select para:
“select im from Imagem_inicial im where im.dataset_ini in (:dataset_ini)”
query.setParameter(“dataset_ini”, datasetSelecionado);
Surgiu algumas dúvidas aqui…
marcusco, quando vc diz
[quote]Esqueci: seu paramentro passar a ser do tipo List.
“select im from Imagem_inicial im where im.dataset_ini in (:dataset_ini)”
query.setParameter(“dataset_ini”, lstDatasetSelecionado);
[/quote]
no parametro “lstDatasetSelecionado”, quer dizer que devo criar um atributo do tipo list?? e usa-lo ali? Tipo assim:
[quote=pcsantana]Amigos, muito obrigado pela atenção!!!
Surgiu algumas dúvidas aqui…
marcusco, quando vc diz
[quote]Esqueci: seu paramentro passar a ser do tipo List.
“select im from Imagem_inicial im where im.dataset_ini in (:dataset_ini)”
query.setParameter(“dataset_ini”, lstDatasetSelecionado);
[/quote]
no parametro “lstDatasetSelecionado”, quer dizer que devo criar um atributo do tipo list?? e usa-lo ali? Tipo assim:
Muito obrigado mesmo pela ajuda e atenção!!! :D[/quote]
Seus campos input ou select terão sempre o value para algo do tipo #{managedBean.atributo} .
Então nesse caso
esta acontecendo algo muito estranho…
quando seleciono algum item do meu listbox e clico no botao Pesquisar, ele não faz nada… não aparece os comando SQL no console…
Tenho um checkbox “Todos diretorios” que se marcado, ele faz a busca em toda a tabela… que é a condição do primeiro if… Esse funciona, mas quando desmarco o checkbox e seleciono um item (condição do else) ele não faz nada…
Outra coisa estranha é que ao desmarcar o checkbox e não selecionar nenhum item do checkbox e clicar em Pesquisar (tbm atende a condição do else), ae sim ele faz o select da segunda condição (aparece os comandos SQL), mas como nenhum item foi selecionado, ele retorna nada :S
15:42:16,956 INFO [stdout] (http-localhost-127.0.0.1-9090-1) Hibernate:
15:42:16,956 INFO [stdout] (http-localhost-127.0.0.1-9090-1) select
15:42:16,956 INFO [stdout] (http-localhost-127.0.0.1-9090-1) imagem_ini0_.id_imageini as id1_9_,
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) imagem_ini0_.caminho as caminho9_,
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) imagem_ini0_.id_datasetini as id4_9_,
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) imagem_ini0_.nome_imagem as nome3_9_
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) from
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) imagem_inicial imagem_ini0_
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) where
15:42:16,957 INFO [stdout] (http-localhost-127.0.0.1-9090-1) imagem_ini0_.id_datasetini in (
15:42:16,958 INFO [stdout] (http-localhost-127.0.0.1-9090-1) ?
15:42:16,958 INFO [stdout] (http-localhost-127.0.0.1-9090-1) )
nao retorna nada… sera que não está pegando o item o listbox? ;s
já que ele está usando um listbox, pode selecionar vários e precisa passar uma lista.
O exemplo que eu passei seria com selectOneMenu.
[/quote]
Eu não vou selecionar varios (e acho que nem dá)… vou selecionar apenas um, e passar como parametro para a busca… ae nao pode ser da primeira forma mencionada?