Buscar itemvenda do array da venda =D [RESOLVIDO]

To com um problema classico. Produto() Venda() Itemvenda() :wink:
pesquizei bastante e nao consegui encontrar a soluçao
eu to utilizando o derby como banco.
eu to utilizando o padrao DAO.
faço o cadastro dos produtos sem problemas.
tenho um array de itemvenda na venda!
tenho uma interface q alimenta esse array.
Mas nao sei como fazer no metodo DAOvenda.gravar(Venda venda) ele buscar cada itemVenda do array e
chamar o metodo DAOitemvenda.gravar(Itemvenda itemvenda) passando os itemvenda pra gravar no banco
:frowning:
obs.: to aprendendo o nome das coisas ainda, entao se der pra me ajudar da forma mais simples possivel eu agradeço.

[quote=Paloschi]To com um problema classico. Produto() Venda() Itemvenda() :wink:
pesquizei bastante e nao consegui encontrar a soluçao
eu to utilizando o derby como banco.
eu to utilizando o padrao DAO.
faço o cadastro dos produtos sem problemas.
tenho um array de itemvenda na venda!
tenho uma interface q alimenta esse array.
Mas nao sei como fazer no metodo DAOvenda.gravar(Venda venda) ele buscar cada itemVenda do array e
chamar o metodo DAOitemvenda.gravar(Itemvenda itemvenda) passando os itemvenda pra gravar no banco
:frowning:
obs.: to aprendendo o nome das coisas ainda, entao se der pra me ajudar da forma mais simples possivel eu agradeço.[/quote]

Oi!

Tu não sabe a parte de SQL, Java ou ambas?
Poste as duas tabelas (Venda, ItemVenda) e o seu código em Java (principalmente ambos os métodos citados por você).

Dessa forma, fica mais fácil de entender sua necessidade.
Abraços.

veja bem eu sei SQL, o meu problema eh como fazer pra percorrer o array de itemvenda q tem dentro da classe venda,
nao sei se fui claro, minha tabla venda tem um array de itemvenda dentro, eu quero percorrer ele e ir gravando no banco os itemvenda
eu sei gravar no banco eu soh n sei percorrer o array pra chamar o metodo gravar pra gravar cada itemvenda do array

public class Venda implements Serializable{

private static final long serialVersionUID = 1L;
private long codigo;
private List<Itemvenda> Itemvenda = new ArrayList<Itemvenda>();

quero que quando for chamar o metodo DAOvenda.gravar(venda) ele jah percorra o array
e pra cada itemvenda do array ele chame o metodo DAOitemvenda.gravar(itemvenda)

Está utilizando o framework hibernate ou SQL nativo?

Bom, ao que eu entendo é SQL nativo, certo?
Se for, faça tudo no DAOvenda.gravar(venda), se dentro de venda você já tem a lista de itens, basta dar um get nessa lista, efetuar um laço de repetição e para cada item, você persiste o item da venda e o respectivo ID da venda (para dizer algo assim “este item pertence a venda x”).

Só antes de persistir o ItemVenda, deves garantir que a venda foi persistida com sucesso, afinal, você não pode persistir um item de venda sem que o mesmo pertença a uma venda, certo? Dentro do método DAOvenda.gravar(venda), você pode ainda verificar se o ID já existe, se existir, você apenas persiste os itens da venda.

Percorrer uma lista você sabe, perfeito?
Abraços.

P.s: você não tento fazer os métodos?

ah tah humm muito bem ai eu elimino o DAOitemvenda hum legal vo testar aki
ah eu n sei percorrer a lista direit n, to apanhando pra caramba medade da minha dificuldade ta nisso

utiliza o for each

for (Object o : listaObjetos)

para percorrer a lista

[quote=igor_henrique]utiliza o for each

for (Object o : listaObjetos)

para percorrer a lista[/quote]

Exatamente com o Igor disse, para o seu caso em questão, seria isso aqui:

for (Itemvenda item : venda.getItemVenda()) {
    // persiste o item no seu banco de dados
   // exemplo de manipulação do objeto
   item.getCodigo();
}

Abraços.

eu amo vcs mew uaHeuhaeaue funciono vlw ae! fico assim ó

	for (Itemvenda o : entidade.getItemvenda()){
		StringBuilder sql2 = new StringBuilder();
		sql2.append("INSERT INTO TB_ITEMVENDA(ITV_CODPRODUTO, ITV_CODVENDA, ITV_VLRUNITARIO," +
				"ITV_QUANTIDADE) VALUES(");
		sql2.append(o.getCodproduto()+",");
		sql2.append(entidade.getCodigo()+",");
		sql2.append(o.getVlrunitario()+",");
		sql2.append(o.getQuantidade()+")");
		
		try {
			pstm = conn.createStatement();
			pstm.execute(sql2.toString());
		} catch (SQLException f) {
			// TODO Auto-generated catch block
			f.printStackTrace();
		}

como finaliza o topico msm?

edita seu primeiro post e coloca [RESOLVIDO] no título, falow