[英]Embedding attributes from a many-to-one relationship
從Oracle數據庫HR示例模式中獲得COUNTRIES
和REGIONS
表:
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;
我想使用REGIONS.REGION_ID = COUNTRIES.REGION_ID
作為REGIONS.REGION_NAME
,將一個簡單的String regionName
屬性映射到REGIONS.REGION_NAME
。
JPA 2.0是否支持這種映射? 我應該使用哪些注釋?
我相當確定您不能將@SecondaryTable
與非PK @SecondaryTable
一起使用,這就是您在此處所要具有的功能,即表不共享相同的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
@Table(name = "vw_countries")
public class Country{
@Id
private Long id;
private String name;
private String region;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.