首页 > 解决方案 > '字段列表'中的Spring + Hibernate未知列'users0_.task_id'

问题描述

我是 Spring 和 Hibernate 的新手。我想在两个表用户和任务之间创建 OneToMany 关系。我认为这是我的代码中的愚蠢错误,但我找不到在哪里。这是我的 sql 代码:

CREATE TABLE IF NOT EXISTS `tms`.`task` (
  `task_id` INT(11) NOT NULL AUTO_INCREMENT,
  `date` DATETIME NULL DEFAULT NULL,
  `hour` VARCHAR(45) NULL DEFAULT NULL,
  `time` DOUBLE NULL DEFAULT NULL,
  `task` VARCHAR(45) NULL DEFAULT NULL,
  `description` TEXT NULL DEFAULT NULL,
  PRIMARY KEY (`task_id`))
ENGINE = InnoDB
AUTO_INCREMENT = 4
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci

CREATE TABLE IF NOT EXISTS `tms`.`user` (
  `user_id` INT(11) NOT NULL,
  `name` VARCHAR(45) NULL DEFAULT NULL,
  `login` VARCHAR(45) NULL DEFAULT NULL,
  `password` VARCHAR(45) NULL DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  CONSTRAINT `fk_task`
    FOREIGN KEY (`user_id`)
    REFERENCES `tms`.`task` (`task_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci

用户实体:

@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="user_id")
    private int id;

    /* other fields */

    @ManyToOne
    @JoinColumn(name="task_id")
    private Task task;

任务实体:

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="task_id")
    private int id;

    @Column(name="date") 
    private Date date;

    @Column(name="hour")
    private double hour;

    @Column(name="description")
    private String description;

    @Column(name="time")
    private double time;

    @OneToMany(mappedBy="task")
    private List<User> users;

我想从所有 USER 的数据库 TASK 对象中获取。无法理解数据库中存在“users0_.task_id”字段。我认为这是默认的休眠命名。请查看我的数据库,因为不确定。

这是我想从数据库中获取数据的代码:

道:

@Override
    public Task getTask(int id) {
        Session session = sessionFactory.getCurrentSession();
        Task task =  session.get(Task.class, id);
        return task;
    }

服务:

@Transactional
    @Override
    public Task getTask(int id) {
        Task task = userDAO.getTask(id);
        Hibernate.initialize(task.getUsers());
        return task;
    }

我的控制器:

Task task = userService.getTask(1);

和错误:

java.sql.SQLSyntaxErrorException:“字段列表”中的未知列“users0_.task_id”

标签: mysqlspringhibernate

解决方案


推荐阅读