tenho um mapeamento que se repetirá várias vezes na mesma classe, como poderia fazer o hibernate distinguir esse mapeamento por valor de cada mapeamento.
vejam a classe:
public class Carro{
@OneToOne
private Dominio cor;
@OneToOne
private Dominio situacao;
}
public class Dominio {
private String cdDominio;
private String nmDominio;
private String vlDominio;
}
Como fazer o Hibernate filtrar em Dominio de acordo com a coluna nmDominio?
Pois você tem dois objetos do mesmo tipo dentro da mesma classe mas concerteza na tabela no banco cada coluna tem um nome certo?
E a segunda annotaion impede que o Hibernate gera uma fk por conta própria.
cara, está meio confuso… porq vc precisa ter um mesmo atributo repetidas vezes? tipo, porq dois Dominios? se só o NOME muda, é um dominio só… se vc precisa de varios, é uma LISTA de dominios, oq faz com q o mapeamento não seja mais oneToOne, manja?! tenta dar uma explicada melhor doq vc ta querendo fazer ai pra gente…
Bem, veja o exemplo são dois atributos do tipo Dominio porém são diferentes e carro só tem 1 cor e 1 situacao e não disse que o NOME muda e sim o VALOR do atributo. maja!?
Ninguem nunca montou um mapeamento que tivesse diversos atributos que são objetos contendo apenas código e descrição? Eu só quero manter uma tabela para guardar todos esses caras.
entendi o q vc quer, mas convenhamos que não faz muito sentido num modelo de dados… uma tabela pra tudo quebra qualquer logica de modelagem…XD
O que eu posso sugerir é vc ter uma lista de Dominios no carro, e verificar qual o valor do nome antes de fazer o que vc precisa fazer, manjou?!
Acho que voce nao entendeu, não é uma tabela pra tudo é uma tabela para código e descrição. Me diz, pra que ter 10 tabelas guardando chave e valor se eu posso ter uma.
JackOld, mesmo assim acho que voce ta complicando, o que o amigo acima falou ta certo. E ilogico ter um mesmo Objeto para popular a mesma tabela declarado 2 vezes na classe.
Uma pergunta, talvez se voce responder ela muitos possam lhe ajudar.
O que seria CD_DOMINIO ? porque no exemplo que voce mostrou, um NM_DOMINIO, mesmo que sejam diferentes, podem possuir um mesmo codigo. Entao seria melhor voce explicar qual o seu negocio.
cd_dominio tera valor 1 tanto para cor quanto para situacao, nesse caso. Voce tem um MER ? um diagrama ? se tiver mostre aqui, para que possamos lhe ajudar melhor.
Chutando no escuro, acho que voce pode fazer isto:
public class Carro{
@OneToOne
private Dominio dominio;
}
E quando voce for persistir, voce faria dominio.setNmDominio(“COR”); e por ai vai. Ate porque na coluna nm_dominio voce nao recebera somente um valor.