JPA:从与当前as MANYTONE链接的表中接收多个列
我是JPA的新手,需要一些建议。 我有两张桌子,一张是汽车,一张是司机。我将获得汽车实体,其中包含几个司机的信息。现在我可以从Driver only Driver_id获取,看起来像这样,但还需要接收Driver name和lastName 等级车:JPA:从与当前as MANYTONE链接的表中接收多个列,jpa,many-to-one,joincolumn,Jpa,Many To One,Joincolumn,我是JPA的新手,需要一些建议。 我有两张桌子,一张是汽车,一张是司机。我将获得汽车实体,其中包含几个司机的信息。现在我可以从Driver only Driver_id获取,看起来像这样,但还需要接收Driver name和lastName 等级车: @Entity public class Car { @JsonIgnoreProperties({"telephone", "mail",}) @ManyToOne @JoinColumn(name = "driver_id"), privat
@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;
...
}
表car 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。
请给我一个提示,我如何做需要的事情。假设您的
驱动程序
类是一个实体(您没有在上面的代码中添加@entity注释。)
您当前的地图显示每个驾驶员可以驾驶多辆车。由于多对一仅存在于汽车
侧,因此无法从驾驶员
到汽车
。为此,您需要将@OneToMany
映射从Driver
映射到Car
。(还有,这不是一个多对多映射吗?每个驾驶员可以驾驶多辆车。而且每辆车可以有多个驾驶员?)
在任何情况下,给定上述映射,您应该能够访问driver.firstName和driver.lastName。当您尝试这样做时,会出现什么错误?Jeff,非常感谢您的回答。对在实体中,你是对的。我不需要有关匹配的汽车从司机方面的信息,所以只有许多注释。此外,这里我们假设我们只有一辆车:)我理解我错了,认为@ManyTone只给我们id字段,再次检查代码,发现有一个函数,它可以剪切除id 0之外的所有关于司机的信息,就像这个司机getOnlyIdDriver(司机司机){driver cuttedDriver=新司机();cuttedDriver.setId(driver.getId);return cuttedDriver;}现在我有另一个奇怪的问题。请告诉我,hibernate是否在每次从表中获取汽车实例时都会在Drivers表中进行select查询?许多人默认为“急切获取”,因此是的,hibernate会为检索到的每辆汽车加入驱动程序。看见