Vraptor + JPA - como salvar uma lista de dados para uma pessoa

Pessoal o titulo não foi muito claro, mais a dúvida é a seguinte: tenho uma sessão onde salvo os itens de um orçamento: como se fosse uma compra onde tenho vários itens e tenho que salva-los na conta de um usuário no BD:

Exemplo:

Paciente: Rafael

DENTE CANINO: RESTAURAÇÃO - R$ 60
DENTE MOLAR: EXTRAÇÃO - R$ 100
DENTE SEGUNDO MOLAR: EXTRAÇÃO - R$ 100

total:R$ 260

e salvar tudo no nome do paciente Rafael para ter o histórico dele salvo.

A sessão já esta beleza só não sei como faço para jogar a lista inteira com o orçamento para o BD.

Aguardo a ajuda! Obrigado :slight_smile:

Você sabe como jogar um item único?

Se sim, faça um for e mande um por um. =D

Com o for ele jogaria todos de um vez só correto?

mais a estrutura do BD ficaria assim correto?

Paciente: Rafael | DENTE CANINO| RESTAURAÇÃO - R$ 60
Paciente: Rafael |DENTE MOLAR| EXTRAÇÃO - R$ 100
Paciente: Rafael |DENTE SEGUNDO MOLAR| EXTRAÇÃO - R$ 100

seria uma linha para cada tratamento correto?

teria um exemplo do for para eu me orientar

Obrigado

for(Carro carro: carros){ salvaCarro(carro); }
Até onde sei, não existe método que salve uma lista inteira. Tem que ser um por um.

mas por exemplo: quanto temos um carrinho de compras com vários itens, e compramos ele salva todos os itens para sua conta?
essa seria minha ideia.

[quote=well]mas por exemplo: quanto temos um carrinho de compras com vários itens, e compramos ele salva todos os itens para sua conta?
essa seria minha ideia. [/quote]O que você poderia fazer é salvar com Cascade.
Você salvaria o objeto pedido e os itens seriam salvos automaticamente.

Esse post mostra como utilizar Cascade: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

faz o orçamento ter uma lista de itens e vc faz um relacionamento um pra muitos no banco…

no hibernate/jpa vc faz:

@Entity
public class Item {
  //...
  @ManyToOne
  Orcamento orcamento;
}

@Entity
public class Orcamento {
   
   @OneToMany(mappedBy="orcamento")
   List<Item> itens;
}

@Lucas.

Fiz conforme a primeira postila do fj28 um relacionamento manytomany

troquei o nome da classe agora é venda e Não orçamento fiz um relacionamento ManyToMany

@ManyToMany private List<Item> items = new ArrayList<Item>();

essa lista de itens contem produtos preço qtd igual a apostila nova, fiz baseado nela.

com esse relacionamento foi criado no banco a tabela venda com id e o usuario que realiza a compra, no meu caso o usuario logado, e criou uma tabela auxiliar venda_item com os campos venda_id e itens_id

e no vendasController

fiz assim

[code]@Restrito
@Post @Path("/vendas")
public void adiciona(Venda venda){

	venda.setItems(this.carrinho.getItens());//pega os itens do carrinho e salva na venda
	dao.adiciona(venda);
	
	result.redirectTo(VendasController.class).lista();
}[/code]

porem não esta funcionando; no console executa o seguinte HQL

Hibernate: 
    insert 
    into
        Venda
        (usuario_login) 
    values
        (?)
Hibernate: 
    insert 
    into
        Venda_Item
        (Venda_id, items_id) 
    values
        (?, ?)
Hibernate: 
    select
        venda0_.id as id11_,
        venda0_.usuario_login as usuario2_11_ 
    from
        Venda venda0_

mais o BD nao recebe informação alguma.

o que estou fazendo de errado?

Faz como o Herbert falou.

isso está dentro de uma transação?

Estou quebrando cabeça para alcançar este mesmo fim, salvar uma compra, venda ou orçamento.

Segue linha de raciocínio, analise pra eu entender melhor.

Consultor acessa o sistema e vai adicionando itens no gerador de orçamento ou vendas (carrinho).

:idea: Teria como a gente depois de gerar o orçamento recuperar os dados do cliente já cadastrado, e por fim salvar tudo na tabela orcamento.

ou

:idea: Criar um botão “Gerar Orçamento” na lista de cliente e encaminha usuário para gerar o orçamento já com os dados do cliente.

Desde já agradeço

tem… geralmente vc recupera esses dados pelo id do cliente… só manter esse id no orçamento.

Voce pode modelar assim. Tabela Cliente e Tabela orçamento, onde a tabela orcamento tera uma chave estrangeira apontando para o id da tabela cliente. Na hora de pegar o orçamento, basta fazer um join.

tá phoda fazer esses relacionamentos com o hibernate. Alem desse que preciso fazer, gostaria de fazer outros que fazer outros.

JDBC é tranquilo.

Mas sou tão persistente quando ele.

Navegando aqui pelo guj encontrei uma discução referente ao caso http://www.guj.com.br/java/292495-onetoone-bidirecional#1552072

“JPA: Mini Livro - Primeiros passos e conceitos detalhados”

Se puderem dar uma olhada nesse post do link acima, por gentilza.

Agradeço