![]()
Pessoal, já pesquisei e não encontrei minha dúvida!
Tenho um relacionamento no meu modelo de banco existente (N,M)
Venda -|-|---------<=–VendaProduto–=>------------|-|-Produto
Na minha aplicação não vou criar uma classe para a tabela VendaProduto e sim uma anotação:
[code]@Entity
public class Venda implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long codigo;
@ManyToMany
@JoinTable(name="VENDA_HAS_PRODUTO",
joinColumns=@JoinColumn(name="VENDA_CODIGO"),
inverseJoinColumns=@JoinColumn(name="PRODUTO_CODIGO"))
private List<Produto> produtos;
// gerar os getters e setters
}[/code]
[code]@Entity
public class Produto implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long codigo;
@ManyToMany(mappedBy="produtos")
private List<Venda> vendas;
// gerar os getters e setters
}[/code]
Como faço um método para listar as vendas de um determinado produto no meu GerenciadorVendasBeans ?
Uai…
qual o problema cara?
tentou fazer o xhtml já ?
[quote=d34d_d3v1l]Uai…
qual o problema cara?
tentou fazer o xhtml já ?
[/quote]
Já fiz, antes disso, tenho que fazer um método para listar as vendas de um produto X .
[code]public List listarVendas() {
Query query = em.createQuery("SELECT ven FROM Venda ven WHERE ................????????? ");
return query.getResultList();
}[/code]
Consegui listar todas as vendas com:
Como eu faço esse método ?
Tem outra forma ?
cara, vc ta com duvida em como fazer a query ? ou como mostra a lista na visualização ?
nao to te entendendo
[quote=d34d_d3v1l]cara, vc ta com duvida em como fazer a query ? ou como mostra a lista na visualização ?
nao to te entendendo[/quote]
Estava com dúvida em fazer o método para mostrar a lista, com a query ou não.
Fiz o seguinte:
[code]public List listarVendas( Produto produto) {
Query query = em.createQuery("SELECT v.produtos FROM Venda v WHERE v.codigo = " + produto.getId());
return query.getResultList();
} [/code]
Para quem vai fazer algo parecido com esse código acima, cuidado com a anotação na propriedade. (fetch = FetchType.LAZY ou FetchType.EAGER)
Então está solucionado ?
coloque [resolvido] no titulo do tópico…
Não entendi mto cara… mas só me diga uma coisa… ONDE coloquei esse método? em qual classe?
[quote=d34d_d3v1l]Então está solucionado ?
coloque [resolvido] no titulo do tópico…
Não entendi mto cara… mas só me diga uma coisa… ONDE coloquei esse método? em qual classe?[/quote]
Em uma classe Controller usando o modelo MVC, onde existe o EntityManager gerenciado pelo container.
[code]@Stateless
@Local(GerenciadorDeVendas.class)
public class GerenciadorDeVendasBeans implements GerenciadorDeVendas{
@PersistenceContext
private EntityManager em;
public List listarVendas( Produto produto) {
Query query = em.createQuery("SELECT v.produtos FROM Venda v WHERE v.codigo = " + produto.getId());
return query.getResultList();
}
// métodos para incluir, alterar…[/code]
[quote=Mathiasr][quote=d34d_d3v1l]Então está solucionado ?
coloque [resolvido] no titulo do tópico…
Não entendi mto cara… mas só me diga uma coisa… ONDE coloquei esse método? em qual classe?[/quote]
Em uma classe Controller usando o modelo MVC, onde existe o EntityManager gerenciado pelo container.
[code]@Stateless
@Local(GerenciadorDeVendas.class)
public class GerenciadorDeVendasBeans implements GerenciadorDeVendas{
@PersistenceContext
private EntityManager em;
public List listarVendas( Produto produto) {
Query query = em.createQuery("SELECT v.produtos FROM Venda v WHERE v.codigo = " + produto.getId());
return query.getResultList();
}
// métodos para incluir, alterar…[/code]
[/quote]
Sim, colocando isso no Controller, vc quebra o MVC.
Pq a ideia do MVC é vc conseguir substituir qqer camada sem afetar a outra.
Uma dica… coloca QUERIES em outra camada (DAO, Repository) para trabalhar apenas com as bases!
Nada de misturar responsabilidades 
mas, siga se vc quiser… n tem nada a ver com o tópico