java - Hibernate 一对一条件获取

标签 java hibernate jpa spring-data-jpa

我正在使用 hibernate 在汽车和人员表之间进行一对一映射。但一个人可能有车,也可能没有车。现在,在使用 hibernate 条件从人员表中获取记录时,我只想获取那些拥有汽车的人,即仅在人员表中存在汽车表中对应条目的那些条目。如何使用 hibernate 标准/别名来完成此操作?

下面是一段代码。请帮助编写获取结果所需的条件或别名:

@Getter
@Setter
@Entity
@Table(name = "Person")
public class Person implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "Person_ID")
    private Long personId;

    @OneToOne(mappedBy = "personAsset", cascade = CascadeType.ALL)
    private Car car;
}

@Getter
@Setter
@Entity
@Table(name = "Car")
public class Car implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "Car_ID")
    private Long carId;

    @OneToOne
    @JoinColumn(name = "Person_ID")
    private Person personAsset;
}

最佳答案

您正在寻找的是@OneToOne注释上的cascadeTypeorphanRemoval=true

这是你的类(class):

@Getter
@Setter
@Entity
@Table(name = "Car")
public class Car implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "Car_ID")
    private Long carId;

    @OneToOne(fetch=FetchType.EAGER , cascade=CascadeType.ALL, orphanRemoval=true)
    @JoinColumn(name = "Person_ID")
    private Person personAsset;
}

关于java - Hibernate 一对一条件获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59152435/

相关文章:

java - 使用 Hibernate 查找包含 100 万条记录的表

java - JPA多对多级联删除

java - 如何使用具有相同存储库的多种数据源类型?

java - ManyToMany 的 QueryDSL 代码生成

java - Spring MVC + JQuery + Ajax 问题

spring - 400 Hibernate @Valid 错误请求

java - 在此示例中使用反射是否合适

mysql - Hibernate:在一个数据库表行中存储固定长度的数组

java - JVM如何执行JNI

java - 无法创建项目或将项目转换为 JPA 项目