给定 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;
我想有一个简单的String regionName
属性映射到REGIONS.REGION_NAME
,使用 REGIONS.REGION_ID = COUNTRIES.REGION_ID
作为连接条件。
JPA 2.0 是否支持这种映射?我应该使用哪些批注?
我相当确定您不能将@SecondaryTable
与非PK连接一起使用,这就是您在这里所拥有的,即表不共享相同的PK。
我能看到的最简单(也可能是唯一(选项是在数据库上创建一个视图并将实体映射到该视图:
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;
}