java - Hibernate 无法将许多学生映射到一个班级
问题描述
我有 2 个简单的实体:学生和班级。我想发布一个学生,在其中指定它所属的类,但我陷入了休眠映射。
类模型.class
@Entity
@Table(name = "class" )
public class ClassModel implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotEmpty
@Size(max = 20)
@Column(name = "name")
private String name;
@Column(name = "tables")
private int tables;
@Column(name = "chairs")
private int chairs;
@Column(name = "teacher")
private String teacher;
(getters + setters)
学生模型
@Entity
@Table(name = "student")
public class StudentModel implements Serializable {
@Id
@Column(name = "student_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int student_id;
@NotEmpty
@Column(name = "name")
@Size(max = 50)
private String name;
@Column(name = "age")
private int age;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id")
private ClassModel classModel;
(getters + setters)
}
StudentController.java
...
@Autowired
private StudentService studentService;
@Autowired
private ClassService classService;
@PostMapping(value = "/save")
public StudentModel save(@RequestBody StudentModel studentModel){
ClassModel classModel = classService.findById(studentModel.getClassId()).get();
studentModel.setClassModel(classModel);
return studentService.save(studentModel);
}
...
但是,当我向 Postman 提出以下请求时:
{
"name": "some name",
"age": 12,
"class_id": 1
}
我从休眠中收到以下错误:
Column 'class_id' cannot be null
我的休眠映射中的错误在哪里?
解决方案
这就是我如何让工作加入休眠状态。看一看:
TrainingEntity.java
@Id
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "animal_id", nullable = false, insertable = false, updatable = false)
private AnimalEntity animalEntity;
@Column(name = "animal_id")
private Integer animalId;
AnimalEntity.java
@Id
private Integer id;
@OneToMany(mappedBy = "animalEntity", fetch = FetchType.LAZY)
private List<TrainingEntity> trainingEntityList = new ArrayList<>();
所以这里是 AnimalEntity 和 TrainingEntity 之间的连接。AnimalEntity 有一个 TrainingEntity 列表。
推荐阅读
- windows - 从包含 2 个下划线的文件名创建一个文件夹,然后将该文件放入该文件夹中
- c++ - extern "C" 静态数组函数参数
- php - 我正在做一个 preg_split 但只获得数组的第二个值的值 - PHP
- reactjs - 这个简单的反应示例有什么问题?
- sql - 用左函数过滤值而不是像“x%”
- amazon-cloudformation - 使用 CDK 动态生成 cloudformation 资源
- r - 重命名各种行
- sql - 如何获取每个客户已花费的总金额
- javascript - 写访问 Firebase 实时数据库的简单保护
- android-studio - 如何获取 USB 存储路径?