Pessoal, tenho uma classe Data_Hora.
Tenho mais três classe que tem um relacionamento “tem um” com a classe Data_Hora.
Posso fazer mais de um mapeamento para a classe Data_Hora, se posso como fazer para usar determinado mapeamento?
Para cada classe que vou utilizar um objeto Data_hora gostaria de definir um nome especifico para a tabela que sera gerada! preciso criar mais de um mapeamento pra isso?
Agradeço desde já!
Rafael,
você poderia explicar melhor, acho que ficou um pouco confuso.
Poste o código de suas classes tb (não esqueça das tags [ code ] )
São duas classe que utilizam Data_Hora como atributo, eu preciso que cada atributo gere uma nova tabela como um nome distinto…
Classe Entrada
public class Entrada
{
private String codigoBarra;
private DataHora dataHoraEntrada;
private DataHora dataHoraValidacao = new DataHora();
private String validade="false";
... gets e sets
}
public class Saida
{
private String codigoBarra;
private DataHora dataHoraValidacao;
private DataHora tempoMaximoSaida;
private DataHora saidaDefinitiva;
...gets e sets
}
- Entrada e Saida são entidades.
-Tenho uma associação 1:1 com a entidade DataHora, mas pra cada atributo deste gostaria de gerar uma nova tabela, ex: TAB_DATA_HORA_VALIDACAO, TAB_SAIDA_DEFITIVA e assim por diante.
Como faço isso?
preciso de mais de um mapemaneto pra classe Data_Hora?
-no mapeamento da classe Data_Hora tenho a tag tabble="" devo omiti-la?
Tenho varias classes que utilizam a mesma tipo de entidade como atributo, mas tem significados diferentes, como Hora da Entrada e Hora da Saida, gostaria de ter uma tabela para cada.
essas são minhas duvidas, espero que tenha fiado mais claro. rs
Entendi.
Mas nesse caso você não precisa criar uma outra tabela, e sim um atributo dentro de sua tabela Entrada, chamado dataHoraValidacao, por exemplo.
Crie quantos atribudos do mesmo tipo você precisar, mas se é realmente 1:1, não deve ser criada outra tabela, e sim uma coluna dentro da mesma tabela.
Depois mapeie com a anotação @OneToOne, informando a @JoinColumn que você criou.
[]'s
Faço o mapeamento com xml.
Como posso fazer isso?
Olha como fiz a associação no mapeamento da minha classe Entrada
<hibernate-mapping>
<class
name="Estadia.Entrada"
table="ENTRADAS">
<id
name="codigoBarra"
column="COD_BARRA">
<generator class="assigned"/>
</id>
<property
name="validade"
column="VALIDADO"/>
<many-to-one
name="dataHoraEntrada"
class="Periodos.DataHora"
column="DATA_ENTRADA"
cascade="save-update"
unique="true"/>
</class>
</hibernate-mapping>
Meu relacionamento no hibernate é definido atraves de chave primaria compartilhada,
Então a chave primaria de Data_Hora é a mesma chave definida para uma Entrada (um codigo de barras como Chave primaria).
Isso não permite que eu tenha duas chaves iguais dentro da mesma tabela.
“Entrada” transefere dados após uma validação pra tabela “Saida”, isso implica que não tenho como guardar essas datas na mesma tabela “Data_Hora” pois já existira uma chave primaria referente a uma “Entrada”.
que zica. estou em um beco sem saida.
A unica solução que me veio a mente é criar uma classe para cada tipo de data.
Classes:
Data_Entrada
Data_Saida
Data_Validação
[edit: Estou pensando em um mapeamento de Herança, classe DataHora e as subclasses concretas HoraEntrada, HoraSaida, HoraValidação]
Será que fica menos feio?
quais informações você precisa guardar dentro do objeto DataHora além da data e da hora logicamente ?
[]'s
lmprates, obrigado pela força cara!
Eu já resolvi o problema.
Fiz uma associação de chave estrangeira. Deu certinho!
Abraço