2016-02-17 9 views
0

Учитывая COUNTRIES и REGIONS столы из Oracle Database HR sample schema:Встраивание атрибуты отношений многие-к-одному

COUNTRIES(country_id, country_name, region_id) 
REGIONS(region_id, region_name) 

И это Country объект класса:

import javax.persistence.*; 

@Entity 
@Table(name = "COUNTRIES") 
public class Country { 
    @Id 
    @Column(name = "COUNTRY_ID") 
    private String id; 

    @Column(name = "COUNTRY_NAME") 
    private String name; 
} 

Я хотел бы отобразить обе таблицы в пределах один класс сущностей Country, то есть без создания отдельного класса сущностей Region.

Вместо этого многие-к-одному:

@ManyToOne 
@JoinColumn(name = "REGION_ID") 
private Region region; 

Я хотел бы иметь простой String regionName атрибут отображается в REGIONS.REGION_NAME, используя REGIONS.REGION_ID = COUNTRIES.REGION_ID как условие соединения.

Поддерживается ли это отображение в JPA 2.0? Какие аннотации следует использовать?

+0

Вы имеете в виду вы хотите вторичная таблица для региона? почему бы не прочитать JPA-документы для вторичных таблиц? Поиск в Интернете показывает много –

+0

Я не думаю, что вы можете использовать @SecondaryTable с не-PK-соединением, что и есть у вас здесь. –

ответ

1

Я уверен, что вы не можете использовать @SecondaryTable с не-PK-соединением, которое было бы здесь, например, у таблиц нет общего PK.

Самый простой (и, вероятно, только) вариант, я могу видеть то, чтобы создать представление о БД и сопоставить Entity к этому:

create view vw_countries as 
select 
    c.country_id as id, c.country_name as name, r.region_name as region 
from 
    countries c 
inner join 
    regions r on r.region_id = c.region_id 

Entity:

@Entity 
@Table(name = "vw_countries") 
public class Country{ 

    @Id 
    private Long id; 

    private String name; 

    private String region; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^