Spring + Hibernate Неизвестный столбец 'users0_.task_id' в 'списке полей' - PullRequest
0 голосов
/ 16 ноября 2018

Я новичок весной и в спящем режиме. Я хочу создать отношение OneToMany между двумя таблицами User и Task. Я думаю, что это глупая ошибка в моем коде, но я не могу найти где. Это мой 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;

Я хочу получить из базы данных объект TASK со всеми пользователями. Не могу понять, что поле 'users0_.task_id' существует в базе данных. Я думаю, что это имя по умолчанию в спящем режиме. Пожалуйста, посмотрите на мою базу данных, потому что не уверены в этом.

Это мой код, который я хочу получить из базы данных:

DAO:

@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' в 'список полей'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...