spring-boot - 级联持久性中“字段列表”中的未知列
问题描述
我正在使用 Spring Boot 2.5.2 版、spring data jpa 和 MySQL 数据库
CREATE TABLE Timesheet (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`tsYear` VARCHAR(4) NOT NULL,
`weekNumber` INT NOT NULL,
`startDate` DATE NOT NULL,
`endDate` DATE NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE TimesheetDays (
`id` INT NOT NULL AUTO_INCREMENT,
`timesheetId` BIGINT(20) NOT NULL,
`dayNumber` INT NOT NULL,
`dayDate` DATE NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `tsdTimesheetId`
FOREIGN KEY (`timesheetId`)
REFERENCES Timesheet (`id`)
);
@Entity
@Table(name = "timesheet")
public class Timesheet {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "timesheet")
private List<TimesheetDay> days = null;
}
@Entity
@Table(name = "timesheetdays")
public class TimesheetDay {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
private Timesheet timesheet;
}
当我尝试保存(timesheet 和 timesheetdays)时,对于 timesheetdays 表,hibernate 正在生成错误的列。
[2m2021-11-05 18:29:44.147[0;39m [32mDEBUG[0;39m [35m15036[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0; 39m [36morg.hibernate.SQL [0;39m [2m:[0;39m 插入timesheetdays(daydate,daynumber,timesheet_id)值(?,?,?) [2m2021-11-05 18:29:44.147[0;39m [32mTRACE[0;39m [35m15036[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0; 39m [36mo.h.type.descriptor.sql.BasicBinder [0;39m [2m:[0;39m 绑定参数 [1] as [DATE] - [2017-12-20] [2m2021-11-05 18:29 :44.148[0;39m [32mTRACE[0;39m [35m15036[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36mo.h.type.descriptor .sql.BasicBinder [0;39m [2m:[0;39m 绑定参数 [2] as [INTEGER] - [1] [2m2021-11-05 18:29:44.148[0;39m [32mTRACE[0;39m [ 35m15036[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36mo.h.type.descriptor.sql.BasicBinder [0;39m [2m:[0 ;39m 绑定参数 [3] as [INTEGER] - [18] [2m2021-11-05 18:29:44.148[0;39m [33m WARN[0;39m [35m15036[0;39m [2m---[0] ;39m [2m[nio-8080-exec-2][0;39m [36mo.h.engine.jdbc.spi.SqlExceptionHelper [0;39m [2m:[0;39m SQL 错误:1054,SQLState:42S22 [2m2021 -11-05 18:29:44。148[0;39m [31mERROR[0;39m [35m15036[0;39m [2m---[0;39m [2m[nio-8080-exec-2][0;39m [36mo.h.engine.jdbc. spi.SqlExceptionHelper [0;39m [2m:[0;39m '字段列表'中的未知列'timesheet_id'
由于生成的列名是 timesheet_id,所以它不起作用。如果生成的列名变成timesheetid,它将起作用。
请帮助解决此问题
解决方案
您需要添加@JoinColumn
注释以在您的TimesheetDay
实体中专门提供列名称值。
@ManyToOne
@JoinColumn(name="timesheetid")
private Timesheet timesheet;
推荐阅读
- python - 在 Python 中测试密码的强度
- firebase - Firebase 规则 - 模拟器说是,代码说不
- vba - VBA-将多个CSV导入工作表,删除某些行/列
- c# - 如何使用 C# 在 Azure blob 存储中解压缩大小为 40 gb 的文件
- python - 在另一个列表中排序列表
- r - 审查 rjags - 无效的父值
- tensorflow - 什么是 Tensorflow 中的集体操作?
- android - Android SensorManager 和 Google Fit 原始传感器数据之间的区别?
- jenkins - 创建自定义工作区时找不到 .Jenkins 文件夹
- python-3.x - Python3 - 以编程方式更改 PSD 图层的可见性