Paulo_Silveira
Crie a classe Medida e anote-a com @Embeddable
Aí, dentro de Produto, basta ter um private Medida medida, e não há necessidade de anotar em nada.
Se quiser pode usar @Column na classe Medida, ou ainda usar @AttributeOverride no private Medida medida se quiser definir os nomes das colunas ali
tjamir
Gutom,
Assim como você estou iniciando em JPA. Então gostaria se me corrigissem se estiver errado. Acredito que seria algo do tipo:
Classe medida:
@Embeddable
public class Medida{
//Definir atributos, getter e setters aqui colocando o @Column com os nomes da colunas
}
E na classe produto:
public class Produto{
//(...)
@Embedded
public Medida getMedida(){
return medida;
}
//(...)
}
Seria isso?
GutomCosta
Oi pessoal,
Obrigado pelas respostas.
Ainda tenho algumas dúvidas:
- Como mapear os dados de produto para a classe Medida
public Class Produto{
// como eu faço mapeamento dos campos (MED_ALTURA,MED_LARGURA,MED_COMPRIMENTO) aqui.
@Embedded
private Medida medida;
}
tjamir, eu também pensei como você, mas ainda tenho estas dúvidas.
Valeu
Luiz Augusto
tjamir
Não entendi tua dúvida…
Você quer que na classe Medida tenha uma referência para o produto?
Paulo_Silveira
Oi Gutom, como eu disse anteriormente, é pra isso que serve a anotacao @AttributeOverride
Olhe ai a explicacao completa:
http://www.hibernate.org/hib_docs/annotations/reference/en/html/entity.html#d0e531
GutomCosta
Obrigado Paulo,
Eu já consegui resolver:
Segue o código:
public class Produto{
@Embedded
@AttributeOverrides({
@AttributeOverride(name="altura",column=@Column(name="MED_ALTURA")),
@AttributeOverride(name="largura",column=@Column(name="MED_LARGURA")),
@AttributeOverride(name="comprimento",column=@Column(name="MED_COMPRIMENTO"))
})
private Medida medida;
}
Medida
@Embeddable
public class Medida{
}
Obrigado pessoal.
Luiz Augusto