Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Hibernate mapeando duas tabelas para uma classe


Para mapear uma única classe para duas (ou mais) tabelas separadas, você precisa usar um @SecondaryTable anotação:
@Table(name="ROOMS")
@SecondaryTable(name="TRAINERS", pkJoinColumns={
    @PrimaryKeyJoinColumn(name="TRSC_OOC_UNIT_ID", referencedColumnName="OOC_UNIT_ID"),
    @PrimaryKeyJoinColumn(name="TRSC_OOC_START_DT", referencedColumnName="OOC_START_DT"),
    @PrimaryKeyJoinColumn(name="TRSC_OOC_START_TM", referencedColumnName="OOC_START_TM")
})
public class MyMergedEntity {

Você precisará anotar cada propriedade individual mapeada para TRAINERS tabela com @Column(table="TRAINERS") para especificar a qual tabela ele pertence. Se você estiver usando mapeamentos XML, todas as opções acima podem ser feitas via participar elemento.

Dito isso, parece-me que suas duas tabelas são de natureza bastante diferente e não devem ser mapeadas para uma única classe (especialmente porque você disse que já mapeou ROOMS em outro lugar). Talvez você deva mapear seu treinador como ManyToOne associação em vez disso.