Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA:从与当前as MANYTONE链接的表中接收多个列_Jpa_Many To One_Joincolumn - Fatal编程技术网

JPA:从与当前as MANYTONE链接的表中接收多个列

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

我是JPA的新手,需要一些建议。 我有两张桌子,一张是汽车,一张是司机。我将获得汽车实体,其中包含几个司机的信息。现在我可以从Driver only Driver_id获取,看起来像这样,但还需要接收Driver name和lastName

等级车:

@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会为检索到的每辆汽车加入驱动程序。看见