How to join on two columns using hibernate JPA annotations

I have the following three relationships

The User table

@OneToMany(mappedBy="user",fetch = FetchType.EAGER,cascade = CascadeType.ALL)
@SortNatural
SortedSet<Project> projects;

@OneToOne(cascade= CascadeType.ALL)
Company company;

The Project:

@ManyToOne
User user;
String company_name;

The Company:

@OneToOne(mappedBy = "company")
User user;
String name;

This gives me a user_id in the Projects table But I also want the company name , a cloumn from the company table to be in the projects table? How do I join user table and projects table on two columns ( user_id and company_id) I want the company_name to be the name column from the Company table

Considering you are using a model like this:

One user has zero or one company;
One user has zero, one or more projects;
The project table holds a foreign key (user_id) to user;
The company table holds a foreign key (user_id) to user.
I think you can define the following JPA mappings:

//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;

This way after retrieving a project p you can get the company’s name:

Project p = ... // code to select a project
String companyName = p.getUser().getCompany.getName();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值