簡體   English   中英

嵌入多對一關系中的屬性

[英]Embedding attributes from a many-to-one relationship

Oracle數據庫HR示例模式中獲得COUNTRIESREGIONS表:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM