5
respostas

onetomany

Galera conseguir entender a relação manytomany graças a Deus, onetoone também, mais aqui eu acho um erro do hibernate ou não? Pois vamos pensar tenho um classe Cliente.

E nela tenho uma anotação onetomany com um carro, ficando apenas um cliente pode ter varios carro

public Class Cliente{ 

    @OneToMany(mappedBY = "cliente")
    private List<Carro> carros = new ArrayList<Carro>();
}

Depois na minha tabela de carro tenho

public Class Carro{

    @ManyToOne
    @JoinnCollun(name = "cliente_codigo")
    private Cliente cliente = new Cliente();
}

Fiz tudo na mão se tiver algum erro de programação é por isso.

Ai na minha tabela carro fica uma fk de cliente, e eu não quero isso, como fazer de um outro jeito sem ter isso? uma opção é uma tabela associativa, mas dai fica many to many ai o cliente pode ter carros de outro e não quero isso! Como resolver?

5 respostas

Acho que não entendi direito.

Pelo seu modelo, um cliente pode ter vários carros, mas um carro só pode estar relacionado a um cliente.

Numa relação de 1 para muitos, a fk(que faz o relacionamento) fica no lado N da relação.

Emerson então do jeito que está feito está certo? Eu acho estrando a fk ta do lado do carro, na tabela carro ta a fk de cliente. Porque isso? Se eu to falando que eu meu cliente tem varios carros eu queria que no meu Cliente ter fk de carro!

Ai penso que toda hora que for adicionar um carro vo ter relação com o cliente? não faz sentido isso para mim. Quero que toda vez eu for adicionar um cliente e esse cliente pode ter um ou mais carro com a fk de carro entendeu?

Alisson, pensando em nível de banco de dados, se a fk ficar do lado cliente, toda vez que um cliente tiver um carro novo, você precisará incluir um novo registro para o cliente.

Se eu entendi bem o seu problema, a fk deve ficar no lado do carro mesmo. Talvez você esteja confundindo o modelo do banco com o modelo da classe. Na tela da aplicação você poderá adicionar vários carros para o seu cliente. À nível de banco, será apenas um registro para o cliente e para cada carro um registro ligado via fk para cada cliente.

Emerson então ta certo desse jeito? Que estranho, talvez eu esteja confundindo mesmo, então do jeito que ta é a maneira certa? Então só para fechar do jeito que ta, na hora que eu for desenvolver a minha aplicação na hora de salvar, irei salvar um cliente com os seus carros? Mais dai desse jeito, na hora que eu for cadastrar um carro eu vo ter que fazer uma referencia para o meu cliente? Nessa parte que estou pensando, por exemplo,

to adicionando um carro. ai na html de carro irei ter alguma referencia para escolher o cliente? seria isso? Pois sempre pensei, no meu cliente ter um select ou uma tabela de carro para salvar o cliente escolhido e seus carros.

Está certo sim, na minha visão. Sim, você salva o cliente com os carros. Sim, desta forma, o carro estaria atrelado ao cliente.

Você também tem que analisar o modelo de negócio da sua aplicação. Se faz sentido existir um carro sem cliente, então talvez o que você queira seja uma relação NxN. Se não, se só faz sentido ter um carro cadastrado com a informação do cliente, então pode ser um 1xN, como está.