如何从 Spring Jpa 中的数据库中获取两个连接表?
How get two joined tables from database in Spring Jpa?
我有两个表,彼此相连。我如何使用 Spring 数据 jpa 从数据库中获取它们?
代码如下,
@Entity
@JsonNaming(PropertyNamingStrategies.UpperSnakeCaseStrategy.class)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String phone;
@Enumerated(EnumType.STRING)
private Position position;
private BigDecimal salary;
@OneToOne(mappedBy = "employee", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Car car;
}
@Entity
@JsonNaming(PropertyNamingStrategies.UpperSnakeCaseStrategy.class)
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String model;
private String color;
private double price;
@OneToOne
@JoinColumn(name = "employee_id")
private Employee employee;
}
// my serice:
@Override
public Employee findEmployeeByName(String name) {
return employeeRepository.getEmployeeByName(name);
}
结果:
result
你能解释一下你到底想要什么吗?就像如果您只想在 return 是您的一个表的查询中使用这两个表(例如员工姓名的汽车),则没有问题。但是如果你想 return 来自两个表的列,你可以看看这个答案
它展示了如何处理这个问题。
由于您已经指定了 fetchType Eager,因此每当您获取任何对象 car 或 employee 时,您将获得这两个对应对象的所有数据。
我有两个表,彼此相连。我如何使用 Spring 数据 jpa 从数据库中获取它们?
代码如下,
@Entity
@JsonNaming(PropertyNamingStrategies.UpperSnakeCaseStrategy.class)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String phone;
@Enumerated(EnumType.STRING)
private Position position;
private BigDecimal salary;
@OneToOne(mappedBy = "employee", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Car car;
}
@Entity
@JsonNaming(PropertyNamingStrategies.UpperSnakeCaseStrategy.class)
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String model;
private String color;
private double price;
@OneToOne
@JoinColumn(name = "employee_id")
private Employee employee;
}
// my serice:
@Override
public Employee findEmployeeByName(String name) {
return employeeRepository.getEmployeeByName(name);
}
结果: result
你能解释一下你到底想要什么吗?就像如果您只想在 return 是您的一个表的查询中使用这两个表(例如员工姓名的汽车),则没有问题。但是如果你想 return 来自两个表的列,你可以看看这个答案
由于您已经指定了 fetchType Eager,因此每当您获取任何对象 car 或 employee 时,您将获得这两个对应对象的所有数据。