我是 JPA 的新手,并試圖了解是否有辦法使Entity一列來自另一個由外鍵鏈接的表。例如,考慮下表:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `jobs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11),
PRIMARY KEY (`id`),
CONSTRAINT `fk_jobs_users` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
);
現在我想Entity為“作業”表制作一個包含user.email. 我知道我可以做類似的事情
@Entity
@Table(name = "jobs")
public class JobEntity {
@Id
@Column(name = "id")
private Long id;
@Column(name = "user_id")
private Long userId;
@Formula("(select user.email FROM user WHERE user.id = user_id)")
private String userEmail;
但我覺得有一種方法可以更好地利用外鍵關系,但我不確定如何。我正在調查@JoinColumn但沒有看到我想要的結果,因為外鍵是我的Entity. 有沒有更好的方法而不是使用@Forula來做到這一點?
uj5u.com熱心網友回復:
我真的不明白這一點。我確信@JoinColumn可以完成您正在尋找的行為。
我正在查看@JoinColumn 但沒有看到我想要的結果,因為外鍵是我的物體中的不同列
例子:
@Entity
@Table(name = "jobs")
public class KronosFileEntity {
@Id
@Column(name = "id")
private Long id;
@ManyToOne
@JoinColumn(name = "user_id", referencedColumn = "id")
private User user;
}
然后您可以訪問電子郵件job.getUser().getEmail()
,如果有幫助,請添加一個方便的方法
public String getUserEmail() {
return user.getEmail();
}
然后
job.getUserEmail()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/481182.html
