Я новичок весной и в спящем режиме. Я хочу создать отношение 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' в
'список полей'