【发布时间】:2018-05-15 10:49:14
【问题描述】:
我想将Persons 和他们的Cars 存储在数据库中。我用的是 Spring 5。
问题是,当我想在数据库中添加一个有汽车的人时,'car' 表中的 'person_id' 字段设置为 null,而不是在创建的人的 id 上设置。
这很奇怪,因为我什至在 Car 类中设置了 nullable=false。
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@OneToMany(mappedBy = "person",cascade = CascadeType.ALL)
List<Car> cars;
}
@Entity
public class Car {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer carId;
@ManyToOne
@JoinColumn(name = "person_id",nullable=false)
private Person person;
}
CREATE TABLE person (
id INT PRIMARY KEY AUTO_INCREMENT,
...
);
CREATE TABLE car (
id INT PRIMARY KEY AUTO_INCREMENT,
person_id INT,
ADD CONSTRAINT person_id REFERENCES person(id)
);
我用JpaRepository来救人:
Person p = new Person();
List<Car> cars = new ArrayList<>();
Car c1 = new Car();
Car c2 = new Car();
cars.add(c1);
cars.add(c2);
p.setCars(cars);
personJpaRepository.save(p);
【问题讨论】:
-
你还没有把车加到人身上
-
建议保持映射和数据库同步:在 person_id 上添加非空
标签: java spring hibernate jpa persistence