【发布时间】:2021-04-22 07:01:29
【问题描述】:
我有两个模型类:
拥有车主字段的汽车:
import lombok.Data;
import javax.persistence.*;
@Entity
@Data
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String carBrand;
private String modelOfCar;
private String gearbox;
private int yearProduction;
private int mileage;
private String status;
@ManyToOne
@JoinColumn(name = "owner_id")
private Owner owner;
}
还有拥有汽车领域的所有者
@Entity
@Data
public class Owner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nameOfOwner;
private String surnameOfOwner;
@OneToMany(mappedBy = "owner")
private List<Car> cars = new ArrayList<>()
public void addCarToOwner(Car car) {
cars.add(car);
}
}
我尝试将一些示例数据添加到该数据中的嵌入式 h2 DB:
Car car1 = new Car();
car1.setCarBrand("asd");
car1.setModelOfCar("asd");
car1.setGearbox("asd");
car1.setYearProduction(22018);
car1.setMileage(321000);
car1.setStatus("Available");
Car car2 = new Car();
car2.setCarBrand("asd");
car2.setModelOfCar("asd");
car2.setGearbox("asd");
car2.setYearProduction(2011);
car2.setMileage(6801020);
car2.setStatus("Available");
Owner owner1 = new Owner();
owner1.setNameOfOwner("asd");
owner1.setSurnameOfOwner("asd");
owner1.addCarToOwner(car1);
Owner owner2 = new Owner();
owner2.setNameOfOwner("asd");
owner2.setSurnameOfOwner("asd");
owner2.addCarToOwner(car2);
carRepository.save(car1);
carRepository.save(car2);
ownersRepository.save(owner1);
ownersRepository.save(owner2);
当我使用findAll() 方法检查所有者存储库的状态时,我得到所有者和他的汽车的空列表。当我为汽车存储库运行findAll() 时,我的所有者为空,因为我没有设置它,但是当所有者需要汽车并且汽车需要所有者时如何设置它?
所有这些导致当我尝试获取具有给定 ID 的用户时,我得到一个空的汽车列表。
【问题讨论】:
-
尝试实现一个 getCars 方法,该方法返回拥有的汽车列表,并查看它是否返回汽车列表。可能只是您的汽车阵列没有序列化。
-
@rakeshpan 仍然返回 0 结果。但我猜汽车也不应该将所有者设置为空
-
你的一对多关系的拥有方是汽车,因为它的外键为“owner_id”,所以尝试创建汽车,创建所有者,制作方法来设置汽车的所有者并尝试通过汽车端建立关系。
标签: java spring-boot jpa spring-data-jpa one-to-many