【问题标题】:JPA: receive several columns from table linked with current as manytooneJPA:从与当前 as manytoone 链接的表中接收几列
【发布时间】:2018-11-08 10:11:43
【问题描述】:

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

台车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。 请给我一个提示,我该怎么做。

【问题讨论】:

    标签: jpa many-to-one joincolumn


    【解决方案1】:

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

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

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

    【讨论】:

    • 杰夫,非常感谢您的回答。是的?实体中的派生者,你是对的。我不需要从司机方面匹配汽车的信息,所以只有 ManyToOne 注释。另外,在这里我们假设我们只有一辆车:) 我知道我认为@ManyToOne 只给我们 id 字段是错误的,再次检查代码并显示,有功能,可以删除所有关于司机的信息除了 id 0_o,像这样 Driver getOnlyIdDriver(Driver driver){ Driver cuttedDriver = new Driver(); cuttedDriver.setId(driver.getId);返回cuttedDriver; }
    • 现在我还有一个奇怪的问题。请告诉我,hibernate 每次从表中获取汽车实例时,是否会在 Drivers 表中进行选择查询?
    • ManyToOne 默认为 Eager fetch,所以是的,Hibernate 会为检索到的每辆汽车加入 Driver。见stackoverflow.com/questions/26601032/…
    猜你喜欢
    • 2016-09-08
    • 2016-12-27
    • 1970-01-01
    • 2014-02-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多