Inserindo um ArrayList em um objeto para gravar no bd

5 respostas
cs.santos0

iai pessual, estou em um ponto do projeto aki surgiu a necessidade de eu fazer uma coisa que não sei como fazer em web…, na verdade acho q o problema será com o hibernate. vou explicar…

Tenho uma tabela de Compra…e uma tabela de ItemCompra, onde existe um relacionamento One-To-Many entre Compra e ItemCompra, ou seja, para uma compra posso ter vários Itens de compra.Ai na minha aplicação penso em ter um método na minha classe logic que preenche um ArrayList, com os supostos ItensCompra a serem inseridos na compra. Ainda não fiz isso, mas creio que fazer um método que adiciona itens da minha jsp para um arraylist nao seja complicado, porem eu não sei como irei gravar esse list junto com o meu objeto Compra…se eu não estive usando hibernate poderia fazer algo como:

Compra compra = new Compra(); ItensCompra itens = new ItensCompra(); compra.setItensCompra(itens);

dessa forma incluiria a listagem ao objeto compra…

minha duvida é como add essa lista ao objeto compra e como gravar nas tabelas??

meu método de adicionar uma compra por hora esta assim:

public void armazenaCompra(Compra compra){ this.daoFactory.beginTransaction(); this.daoFactory.getCompraDao().atualiza(compra); this.daoFactory.commit(); }

alguem ai poderia me dar uma ajuda??

vlw

5 Respostas

von.juliano
É só vc anotar suas classes, uma referenciando a outra:
@Entity
public class ItensCompra {
	
	@ManyToOne
	private Compra compra;
}

@Entity
public class Compra {
	
	@OneToMany(mappedBy = "compra")
	private List<ItensCompra> itensCompra;
}
Quando vc persistir a Compra, os itens referenciados tb serão persistidos.

Blz? Flw! :thumbup:

cs.santos0

Cara ja esta assim:

@Entity
public class Compra {

	@Id
	@GeneratedValue
	@Column(name="id_compra")
	private Long id;

	@OneToMany(mappedBy="compra", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private Collection<ItemCompra> itemCompras;

//getters and setters
}
@Entity
public class ItemCompra {

	@Id
	@GeneratedValue
	private Long id;

	private Double frete;

	private Double mat_subst;

	private Integer quantidade;

	private Double valor_venda;

	@OneToOne
	@JoinColumn(name="id_produto")
	private Produto produto;

	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="id_compra",
			    insertable=true,
			    updatable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Compra compra;

//getters and setters

mas quando eu for gravar no banco, como q o meu metodo adicionaCompra, acha a lista de itens??...eu não passo em lugar nenhum?...o hibernate acha sozinho??

vlw

von.juliano

Desde que vc tenha setado os itens na compra, sim, ele acha sozinho.

Blz? Flw! :thumbup:

cs.santos0

o problema é esse, não sei como posso adicionar a lista de itens a compra...

meu jsp esta assim:

<form name="form1" method="post" action="produto.armazenaCompra.logic">
<div class="tab-container" id="container1">
<ul class="tabs">
	<li><a href="#" onClick="return showPane('pane1', this)" id="tab1">Dados
	da Compra</a></li>
	<li><a href="#" onClick="return showPane('pane2', this)">Itens
	da Compra</a></li>
</ul>

<div class="tab-panes">

<div id="pane1"><br>
<table width="200" border="0" cellspacing="0">
	<tr>
		<td bgcolor="#000000" class="style9 style14">Dados Principais</td>
	</tr>
</table>
<table width="517" border="0" cellspacing="0">
	<tr bgcolor="#666666">
		<td colspan="2"><span class="style12">Cod. Compras </span><span
			class="style13">:</span></td>
		<td colspan="2"><span class="style12">Cod.:</span></td>
		<td><span class="style12">Fornecedor:</span></td>
		<td><span class="style12">Pedido:</span></td>
		<td><span class="style12">Nota Fiscal:</span></td>
	</tr>
	<tr bgcolor="#666666">
		<td><input name="compra.id" readonly="readonly" type="text" size="15"></td>
		<td><input type="button" name="Button5" class="groovybutton"
			value="Incluir" onMouseOver="goLite(this.form.name,this.name)"
			onMouseOut="goDim(this.form.name,this.name)"></td>
		<td><input id="idCod" name="compra.fornecedor.cod" type="text" size="10"></td>
		<td><input name="Submit2" type="button" value="Incluir"
			class="groovybutton"
			onClick="window.open('produto.pesquisaFornecedor.logic', 'popup', 'width=690, height=380, top=200,left=250');"
			onMouseOver="goLite(this.form.name,this.name)"
			onMouseOut="goDim(this.form.name,this.name)" /></td>
		<td><input id="idFornecedor" name="fornecedor" type="text"
			size="50"></td>
		<td><input name="compra.pedido" type="text" size="20"></td>
		<td><input name="compra.notaFiscal" type="text" size="15"></td>
	</tr>
</table>
<table width="835" border="0" cellspacing="0">
	<tr bgcolor="#666666" class="style9">
		<td><span class="style14">Data Emiss&atilde;o:</span></td>
		<td><span class="style14">Data Previs&atilde;o: </span></td>
		<td><span class="style14">Data Entrega: </span></td>
		<td><span class="style14">Respons&aacute;vel:</span></td>
		<td><span class="style14">Forma Parcelamento : </span></td>
		<td><span class="style14">Tipo Pagamento : </span></td>
	</tr>
	<tr bgcolor="#666666" class="style9">
		<td><input name="compra.dataEmissao" type="text" size="18"></td>
		<td><input name="compra.dataPrevisao" type="text" size="18"></td>
		<td><input name="compra.dataEntrega" type="text" size="18"></td>
		<td><input type="text" name="compra.responsavel"></td>
		<td><select name="compra.formaPagamento.id">
			<option>-- Selecione --</option>
			<c:forEach var="formaPagamento" items="${listaFormaPagamento}">
				<option value="${formaPagamento.id}">${formaPagamento.descricao}</option>
			</c:forEach>
		</select></td>
		<td><select name="compra.tipoPagamento.id">
			<option>-- Selecione --</option>
			<c:forEach var="tipoPagamento" items="${listaTipoPagamento}">
				<option value="${tipoPagamento.id}">${tipoPagamento.descricao}</option>
			</c:forEach>
		</select></td>
	</tr>
</table>
<br>
<table width="200" border="0" cellspacing="0">
	<tr>
		<td bgcolor="#000000" class="style9 style14">Transportadora</td>
	</tr>
</table>
<table width="900" border="0" cellspacing="0">
	<tr bgcolor="#666666" class="style9">
		<td colspan="2"><span class="style14">Cod:</span></td>
		<td width="176"><span class="style14">Transportadora:</span></td>
		<td width="146"><span class="style14">Peso Liquido Total:</span></td>
		<td width="132"><span class="style14">Peso Bruto Total: </span></td>
		<td width="113"><span class="style14">Frete:</span></td>
		<td width="106"><span class="style14">Seguro:</span></td>
		<td width="108"><span class="style14">Despesas</span></td>
	</tr>
	<tr bgcolor="#666666" class="style9">
		<td width="50"><input id="idCodTransp" name="textfield11"
			type="text" size="8"></td>
		<td width="53"><input type="button" name="Button6"
			class="groovybutton" value="Incluir"
			onClick="window.open('produto.pesquisaTransportadora.logic', 'popup', 'width=690, height=380, top=200,left=250');"
			onMouseOver="goLite(this.form.name,this.name)"
			onMouseOut="goDim(this.form.name,this.name)"></td>
		<td><input id="idTransportadora" name="compra.transportadora" type="text"
			size="28"></td>
		<td><input name="compra.pesoLiquidoTotal" type="text" size="18"></td>
		<td><input name="compra.pesoBrutoTotal" type="text" size="18"></td>
		<td><input name="compra.frete" type="text" size="13"></td>
		<td><input name="compra.seguto" type="text" size="15"></td>
		<td><input name="compra.despesas" type="text" size="18"></td>
	</tr>
</table>
<table width="294" border="0" cellspacing="0">
	<tr bgcolor="#666666" class="style9">
		<td width="43" bgcolor="#666666"><span class="style14">Descri&ccedil;&atilde;o:
		</span></td>
		<td width="249"><input name="compra.descricao" type="text" size="100"></td>
	</tr>
</table>
<br>
<table width="267" border="0" cellspacing="3" bgcolor="#FFFFFF">
	<tr class="style9">
		<td colspan="2">Frete por conta do:</td>
	</tr>
	<tr class="style9">
		<td width="95"><input name="compra.freteConta" type="radio"	value="1"> Emitente</td>
		<td width="206"><input name="compra.freteConta" type="radio" value="2"> Destinat&aacute;rio</td>
	</tr>
	<tr class="style9">
		<td colspan="2"><input type="checkbox" name="compra.freteNoTotal"
			value="1"> Incluir Frete no total <input type="button"
			name="Button3" class="groovybutton" value="Alterar Frete"
			onMouseOver="goLite(this.form.name,this.name)"
			onMouseOut="goDim(this.form.name,this.name)"></td>
	</tr>
	<tr class="style9">
		<td colspan="2">
		<div align="left"><input type="checkbox" name="compra.manterCusto"
			value="1"> Manter Custo</div>
		</td>
	</tr>
</table>
</div>

<%-- Implementação da segunda aba --%>
<div id="pane2">
<br>
<table width="200" border="0" cellspacing="0">
	<tr>
		<td bgcolor="#000000" class="style9 style14">Incluir</td>
	</tr>
</table>
<table width="692" border="0" cellspacing="0">
	<tr bgcolor="#666666" class="style9">
		<td width="289"><span class="style14">Produto:</span></td>
		<td width="88"><span class="style14">Valor:</span></td>
		<td width="65"><span class="style14">Un.:</span></td>
		<td width="73"><span class="style14">ICMS: 0% </span></td>
		<td width="88"><span class="style14">ICMS: D% </span></td>
		<td width="75"><span class="style14">IPI: % </span></td>
	</tr>
	<tr bgcolor="#666666" class="style9">
		<td><input id="idProdDescricao" name="itemCompra.produto.descricao" value=""
			type="text" size="25"> <input type="button" name="Button"
			value="Incluir" class="groovybutton"
			onClick="window.open('produto.pesquisaProdutoPopup.logic', 'popup', 'width=690, height=380, top=200,left=250');"
			onMouseOver="goLite(this.form.name,this.name)"
			onMouseOut="goDim(this.form.name,this.name)" /></td>

		<td>
		<input id="idProdCusto" name="itemCompra.produto.custo_medio" type="text"
			size="10"  />
			</td>
		<td><input id="idProdUnidade" name="itemCompra.produto.UnMedida" type="text"
			size="8"></td>
		<td><input id="idProdIcms_1" name="itemCompra.produto.icms" type="text"
			size="9"></td>
		<td><input id="idProdIcms_2" name="itemCompra.produto.icms" type="text"
			size="9"></td>
		<td><input id="idProdIpi" name="itemCompra.produto.ipi" type="text" size="9"></td>
	</tr>
	<tr bgcolor="#666666" class="style9">
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
</table>
<table width="661" border="0" cellspacing="0">
	<tr bgcolor="#666666" class="style9">
		<td width="111"><span class="style14">Quantidade:</span></td>
		<td width="111"><span class="style14">Subtotal:</span></td>
		<td width="109"><span class="style14">Frete: % </span></td>
		<td width="164"><span class="style14">Mat. com Subt.
		Trib.: </span></td>
		<td width="156">&nbsp;</td>
	</tr>
	<tr bgcolor="#666666" class="style9">
		<td>
		<input id="idProdId" type="hidden" name="itemCompra.produto.id" />
		<input name="itemCompra.quantidade" type="text" size="15"></td>
		<td><input name="itemCompra.valor_venda" type="text" size="15"></td>
		<td><input name="itemCompra.frete" type="text" size="15"></td>
		<td><input name="itemCompra.mat_subst" type="text" size="15"></td>
		<td>
		<div align="center">
			<input type="button"
			name="Button7"
			value="Inserir Produto"
			onclick="addItemCompra()"
			class="groovybutton"
			onMouseOver="goLite(this.form.name,this.name)"
			onMouseOut="goDim(this.form.name,this.name)"
			/>
		</div>
		</td>
	</tr>
	<tr bgcolor="#666666" class="style9">
		<td height="16">&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>
		<div align="center"></div>
		</td>
	</tr>
</table>
<br>

<fieldset style="width:80%;">
<center>

<display:table id="itemCompra" name="${itens}"  pagesize="5"
	style="margin: 20px 0 20px 0; font-family:Verdana, Geneva, Arial, Helvetica, sans-serif; border: 1px solid #666;
	font-size: 11px;width:70%" export="true">
	<display:column title="Id" style="width:5%">
		<div align="center">${itemCompra.produto.id}</div>
	</display:column>
	<display:column title="Descrição">
		<div align="left">${itemCompra.produto.descricao}</div>
	</display:column>
	<display:column property="quantidade" title="Quatidade"/>
	<display:column property="produto.unMedida" title="UN"/>
	<display:column property="produto.icms" title="ICMS"/>
	<display:column property="frete" title="Frete"/>
	<display:column property="produto.ipi" title="IPI"/>
	<display:column property="valor_venda" title="Valor"/>
	<display:column title="Remover" style="width:15%">
	 		<div align="center">
				<a href="produto.removeItemCompraList.logic?n=${itemCompra.produto.id}"><img src="../images/excluir.gif"/></a>
			</div>
		</display:column>
	<display:setProperty name="export.pdf" value="true" />
	<display:setProperty name="export.csv" value="false" />
	<display:setProperty name="export.xml" value="false" />
</display:table>

</center>
</fieldset>

</div>

</div>
</div>
</form>

existe mais coisas nele, mas eu tirei...

ai não sei como adicionar essa lista de itens na compra

se vc puder me ajudar...
vlw

cs.santos0

Problema resolvido… :smiley:

Criado 12 de março de 2008
Ultima resposta 13 de mar. de 2008
Respostas 5
Participantes 2