0

我是 JPA 的新手,需要一些建议。我有两张表,Car 和 Driver 链接为 ManyTyOne。我会获得 Car 实体,其中包含有关几个司机的信息。现在我只能从驱动程序中获取 driver_id,它看起来像这样,但还需要接收驱动程序名称和姓氏。

类车:

@Entity
public class Car {

@JsonIgnoreProperties({"telephone", "mail",})
@ManyToOne
@JoinColumn(name = "driver_id"),
private Driver driver;
...
}

@Entity
class Driver: 

@JsonIgnoreProperties({"telephone", "mail",})
public class Driver {

private Long id;
private String firstName;
private String lastName;
private String telephone;
private String mail;
...
}

表车SQL:

CREATE TABLE `car` (
`id` decimal(20) unsigned NOT NULL AUTO_INCREMENT,
`driver_id` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`id`),
 FOREIGN KEY (driver_id) REFERENCES driver(id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

起初,我认为可以通过以下方式接收司机姓名和姓氏:

@JoinColumns({@JoinColumn(name = "driver_id"),
        @JoinColumn(name = "first_name"),
        @JoinColumn(name = "last_name")})

但是文档说,@JoinColums 仅适用于复合 fk。请给我一个提示,我该怎么做。

4

1 回答 1

0

假设您的Driver类是一个实体(您没有在上面的代码中添加 @Entity 注释。)

您当前的映射表明每个驾驶员可以驾驶多辆汽车。由于多对一仅存在于Car侧面,因此无法从Driverto Car。为此,您需要有一个@OneToManyDriver到的映射Car。(另外,这不应该是多对多映射吗?每个驾驶员可以驾驶多辆车。每辆车可以有多个驾驶员?)

在任何情况下,根据上述映射,您应该能够访问 driver.firstName 和 driver.lastName。当您尝试这样做时会出现什么错误?

于 2018-05-29T22:06:26.133 回答