我有以下三种关系
用户表
@OneToMany(mappedBy="user",fetch = FetchType.EAGER,cascade = CascadeType.ALL)
@SortNatural
SortedSet<Project> projects;
@OneToOne(cascade= CascadeType.ALL)
Company company;
项目:
@ManyToOne
User user;
String company_name;
公司:
@OneToOne(mappedBy = "company")
User user;
String name;
这在Projects表中给了我一个user_id但是我也想要公司名称,公司表中的cloumn在项目表中?如何在两列(user_id和company_id)上加入用户表和项目表我希望company_name是Company表中的名称列
答案 0 :(得分:0)
考虑到您使用的是这样的模型:
我认为您可以定义以下JPA映射:
//User table
@Id
Long id;
@OneToMany(mappedBy="user",fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@SortNatural
SortedSet<Project> projects;
@OneToOne(mappedBy="user", fetch=FetchType.EAGER, cascade= CascadeType.ALL)
Company company;
//Project table
@Id
Long id;
@ManyToOne
@JoinColumn(name="user_id")
User user;
//Company table
@Id
Long id;
@OneToOne
@JoinColumn(name="user_id")
User user;
String name;
这样,在检索项目p
后,您可以获得公司的名称:
Project p = ... // code to select a project
String companyName = p.getUser().getCompany.getName();