当前位置: 首页 > 知识库问答 >
问题:

级联持久性中“字段列表”中的未知列

锺离刚洁
2023-03-14

我使用的是Spring Boot版本2.5.2、Spring数据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;


}

当我尝试保存(时间表和时间表)时,对于时间表表,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插入到时间表日(日,日,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[39m[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[2m[0;36mo.h.type.descriptor.sql.BasicBinder[36mo.h.type.descriptor.sql.BasicBinder:[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:[33mWARN[0;39m[35m15036[0;39m[2m---[0;39m[2m[nio-8080-exec-2][0;39m[39m[0;39m[2m:[0;39m2m错误: 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;36mo.h.engine.jdbc.spi.SqlExceptionHelper[39m[0;36mo.h.engine.jdbc.spi.SqlExceptionHelper[SQL:[0;timesheet_id字段列表中的未知列'39m'

由于生成的列名timesheet_id,因此它不起作用。如果生成的列名称变为时间表 ID,它将起作用。

请帮助解决此问题

共有1个答案

詹弘毅
2023-03-14

您需要添加@JoinColumn批注,以专门在“时间表天”实体中提供列名称值。

@ManyToOne
@JoinColumn(name="timesheetid")
private Timesheet timesheet;
 类似资料:
  • 所以首先我为我不可靠的解释道歉。我的PHP技能需要认真改进。 错误消息表示“”未知。我知道这不是真的,因为当我创建一个名为“”的变量并回显前者时,我会得到编号。 以下是完整的错误消息: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42S22]:未找到列:C:\xampp\htdocs\loginregister master\addnew中的“字段列表”中的1054

  • 我需要帮助。 使用方法时,在HQL中出现错误: 我猜他必须写而不是 可能是我做错了实体和关系吗? 2个实体-房屋和街道 ER模型: 餐桌街道 ID 名称 houses_id 桌房 ID 名称 我的类: 街道 房屋 我的道小鬼: StreetDaoImp: HouseDaoImpl: 错误:

  • 即使我在表中设置了关系和定义了外键,我得到这个错误的原因是什么?

  • 问题内容: 我需要帮助。 当我使用方法时,我在HQL中有错误: 我猜他一定要写代替 可能是我做错了实体和关系吗? 2个实体-房屋和街道 ER-model: Table Streets ID Name Houses_id Table Houses ID name My Classes: Street House My DAOIMP: StreetDAOImp: HouseDAOImpl: 错误: 问

  • 问题内容: 我试图将值添加到phpmyadmin中的表中,但出现错误:“字段列表”中的未知列“ …”。 这是我的代码: 因此,当我在上一页的表单中输入fds作为名称时,我得到:“字段列表”中的未知列“ fds”。这以前从未发生过,我也不知道发生了什么。 问题答案: 我认为这 应该

  • 我正在尝试使用Hibernate处理OneTo诸多关系。我正在使用@Temporal注释告诉hibernate有关Data字段的信息。我不确定为什么我在这里得到这个错误。看来日期格式有问题。请让我知道如何解决它。 顾客 订单 跑步者 错误