Начинаю загружаться весной и использую репозиторий jpa для сохранения локальной базы данных mysql, и у меня возникают проблемы с моей вставкой. Я упростил его для моих классов пользователя и задач, у пользователя может быть задача, и я использую аннотацию @ManyToOne в классах задач для одного направления. Когда конечная точка вызывается в почтовом отделе, я получаю сообщение об ошибке, и трассировка говорит, что столбец user_id равен нулю (это сопоставленный столбец от пользователя).
Для отладки я установил точку останова в классе обслуживания задачи по фактическому методу taskRepo.save (task), и кажется, что user_id на самом деле. Я пробовал двунаправленные сопоставления с одним ко многим и многими к одному с отображением по выбору, но безрезультатно.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true)
private Long id;
private Long postId;
@Column(unique = true, nullable = false)
private String username;
@Column(unique = true, nullable = false, name = "email")
private String email;
@Column(nullable = false)
private String password;
@Id
@GeneratedValue(strategy =GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "taskName", nullable = false)
private String taskName;
@Column(name = "description")
private String description;
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private User user;
@Autowired
private TaskService taskService;
@GetMapping("/getAllTask")
public List<Task> getAllTasks(){
return taskService.getAllTask();
}
@CrossOrigin(origins = "http://localhost:3000")
@PostMapping("/addTask")
public void addTask(@RequestBody Task task){
taskService.addTask(task);
}
@Autowired
private TaskRepo taskRepo;
public List<Task> getAllTask(){
List<Task> tasks = new ArrayList<>();
taskRepo.findAll().forEach(task -> tasks.add(task));
return tasks;
}
public void addTask(Task task){
taskRepo.save(task);
}
{
"taskName": "Task 1",
"description": "This is the first item",
"user_id": 1
}
{
"timestamp": "2019-04-02T02:15:06.989+0000",
"status": 500,
"error": "Internal Server Error",
"message": "could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement",
"path": "/task/addTask"
}
[enter image description here][1] ERROR 30016 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
java.sql.SQLIntegrityConstraintViolationException: Column 'user_id' cannot be null