Olá pessoal , estou retomando os estudos com java depois de 1 ano parado =/ , e estou criando aqui um gerenciador para oficina nada comercial ou acadêmico , to tentando relembrar regra de negócio, CRUD básico e tal para poder ir avançando…
minha dúvida chega a ser ridícula mais lá vai.
tenho as entidades Cliente e Veiculo onde um Veiculo tem um Cliente e um Cliente tem uma Lista de Veiculos , o pessoal aqui já me ajudou com a modelagem do banco , mas agora não estou conseguindo implementar o DAO -.-’ , como devo fazer pra inserir uma lista de Veiculo no Cliente.
Primeiro, coloque as suas entidades aqui para sabermos como está mapeado.
Provavelmente você mapeou o cliente dentro de um veículo, então algo assim seria adequado:
public void save(Veículo v, Cliente c) {
try {
session.beginTransaction();
v.setCliente(c);
session.save(v);
session.getTransaction().commit();
} catch(HibernateException e) {
session.getTransaction().rollback();
throw e;
}
}
[quote=Rafael Guerreiro]Primeiro, coloque as suas entidades aqui para sabermos como está mapeado.
Provavelmente você mapeou o cliente dentro de um veículo, então algo assim seria adequado:
public void save(Veículo v, Cliente c) {
try {
session.beginTransaction();
v.setCliente(c);
session.save(v);
session.getTransaction().commit();
} catch(HibernateException e) {
session.getTransaction().rollback();
throw e;
}
}
[/quote]
Cliente
public class Cliente implements Serializable{
private static final long serialVersionUID = 1L;
private Integer idCliente;
private String nome;
private Contato idContato;
private List<Veiculo> veiculos;
Veiculo
public class Veiculo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer idVeiculo;
private String modelo;
private String marca;
private String cor;
private int ano;
private String placa;
private String uf;
private Cliente idCliente;
ainda não fiz o mapeamento com anotação to relendo alguns matérias , pq estou muito perdido. esse método save ai eu posso colocar ele no DAO de Cliente, mais oque quero tb é que quando eu for cadastrar um cliente eu consiga inserir um ou mais veiculos.
Mas eu queria saber como estava mapeado, então me mostre o mapeamento… Ou então as tabelas.
A questão é: para salvar um veículo com um cliente, você precisa ter um cliente.
Para salvar um cliente com um ou mais veículos, você precisa ter os veículos.
No fim das contas, é isso que importa:
Para ambos os casos.
Há realmente necessidade de ter esse relacionamento bi-direcional? ou seja, Veiculo ter atributo de Cliente e vice-versa?
sim pq quero fazer uma busca no veiculo encontrar o cliente que é dono do veiculo e fazer uma busca no cliente e contrar os veiculos dele.
Mas, dependendo do caso, é muito mais prudente fazer isso via select.
vc pode explicar tipo como assim prudente?
e outra vc sabe algum github ai que tenha códigos desse tipo com CRUD + JSF + JPA + Hibernate com relacionamentos 1:1 , 1:n : n:m e tal
Tem o mamute, que é o código por trás do GUJ respostas: http://www.mamute.org/
Mas acho que ele é em VRaptor 4. Mas o crud é o que importa.
Prudente no sentido de que pode ser melhor você fazer um select no banco de dados para pegar a lista de veículos, dado um cliente, por exemplo.
[quote=Rafael Guerreiro]Mas eu queria saber como estava mapeado, então me mostre o mapeamento… Ou então as tabelas.
A questão é: para salvar um veículo com um cliente, você precisa ter um cliente.
Para salvar um cliente com um ou mais veículos, você precisa ter os veículos.
No fim das contas, é isso que importa:
Para ambos os casos.
[/quote]
eu posso fazer algo do tipo ??
List<veiculo> veiculo = new LinkedList<Veiculo>();
veiculo.setModelo("g4");
veiculo.setMarca("gol");
for(Veiculo veiculo: veic){
veiculo.setCliente(cliente);
}
O código, como está escrito, não compila.
Seria isso que você quis dizer?
List<veiculo> veic = new LinkedList<Veiculo>();
for(Veiculo veiculo: veic) {
veiculo.setCliente(cliente);
veiculo.setModelo("g4");
veiculo.setMarca("gol");
}
Assumindo que se tenha algum veículo dentro daquela lista, isso funciona.
[quote=Rafael Guerreiro]O código, como está escrito, não compila.
Seria isso que você quis dizer?
List<veiculo> veic = new LinkedList<Veiculo>();
for(Veiculo veiculo: veic) {
veiculo.setCliente(cliente);
veiculo.setModelo("g4");
veiculo.setMarca("gol");
}
Assumindo que se tenha algum veículo dentro daquela lista, isso funciona.[/quote]
obrigado