Persistir List<Veiculo> para um Motorista

6 respostas
P

Boa tarde Pessoal.

Estou começando com JEE JPA HIBERNAT

Tenho a seguinte situação um entity Motorista e um entity Veiculo

vejam como elas estão

@Entity 
public class Veiculo implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idveiculo;

	@ManyToOne
	@JoinColumn(name = "idMot") 
	private Motorista motorista;

	private String anoVei;

	private float capasciVei;

	private String marcaVei;

	private String modeloVei;

	private String tipoVei;

   // gets and sets

e

@Entity
public class Motorista implements Serializable {
	private static final long serialVersionUID = 1L;
 
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idMot;

	@OneToMany(mappedBy = "motorista")
	private List<Veiculo> veiculo;

	private String categoriaCnhMot;

	private int cnhMot;

      // gets and sets

Como que eu faço para persistir no BD

EX;

Veiculo v1 = new Veiculo();

Veiculo v2 = new Veiculo();

Veiculo v3 = new Veiculo();

associado somente com um Motorista

ou seja, um motorista tem muitos veiculos e muitos veiculos pertence somente a um motorista

tentei criar uma lista de veiculo para setar em um motorista, porem minha mente já embaralhou toda

List<Veiculo> listaDeVeiculos;

motorisa.setVeiculo(listaDeVeiculos);

agora ja não sei mais

obrigado Qualguer Ajuda;

6 Respostas

romarcio

Você precisa criar um objeto veiculo para cada veículo que deseja inserir em motorista e depois adicionar o objeto a lista de veiculos.

Veiculo v1 = new Veiculo("FXC 3603", "Amarelo", ...);
Veiculo v2 = new Veiculo("FXC 8808", "Vermelho", ...);
Veiculo v3 = new Veiculo("FXC 3000", "Verde", ...);

List&lt;Veiculo&gt; veiculos = new ArrayList&lt;Veiculo&gt;();
veiculos.add(v1);
veiculos.add(v2);
veiculos.add(v3);

motorista.setVeiculos(veiculos);
maxdavis

1ª Trocar Por um ‘Set’, porque? Na hora de você trazer o objeto Motorista ele vai trazer todos os veiculos. se você usar o ‘List’ ele não vai trazer.
2ª Quando você for persistir o Motorista, alimenta esse Set com todos os veiculos que você queira.

Seu Código
   @OneToMany(mappedBy = "motorista")  
    private List<Veiculo> veiculo;  

Novo Código
@OneToMany(mappedBy = "motorista", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private Set<Veiculo> veiculo= new HashSet<Veiculo>(0);
romarcio

Como assim com List não vai trazer?

A única diferença é que o Set não aceita veículos repetidos e pode trazer os veículos respeitando algum tipo de ordenação.

P

Esta dando para entender. vou esperar mais respostas

Hebert_Coelho

Aqui mostra como fazer, e como você poderia utilizar o cascade para te ajudar na persistência: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

P

Obrigado Hebert Coelho vou dar uma olhada agora.

Seu site é ótimo, muitos assuntos bem detalhados

Criado 8 de dezembro de 2012
Ultima resposta 8 de dez. de 2012
Respostas 6
Participantes 4