Я получаю это исключение, пока пытаюсь сохранить объект в базе данных H2.
Объект, который я пытаюсь сохранить, определен следующим образом:
package mypackage.foo.core.jpa.domain;
@Entity
@Getter
@NoArgsConstructor
public class Task implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Setter
private Long id;
private String name;
private String description;
Контроллер:
package mypackage.foo.core.web.controller;
@RestController
@RequiredArgsConstructor
public class TaskController {
private final TaskService taskService;
@PostMapping("/api/task/save")
public ResponseEntity<Task> handlePostAddTask(@RequestBody Task task) {
Task savedTask = taskService.save(task);
return new ResponseEntity<>(savedTask, HttpStatus.CREATED);
}
}
Полезная нагрузка, которую я отправляю на эту конечную точку через почтальона:
{
"name":"first task",
"description":"some fascinating description"
}
хранилище:
package mypackage.foo.core.jpa.repository;
@Repository
public interface TaskDao extends JpaRepository<Task, Long> {
}
Конфигурация приложения:
@SpringBootApplication
@EnableJpaRepositories(basePackages = {"mypackage.foo.core.jpa.repository"})
@EntityScan(basePackages = {"mypackage.foo.core.jpa.domain"})
public class FooApplication {
public static void main(String[] args) {
SpringApplication.run(FooApplication.class, args);
}
}
Maven Deps:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Мой подход: Первая идея состояла в том, что это произошло из-за отсутствия установщика для Id
в Task
, но это не помогло. Мне было интересно, могу ли я получить какие-либо советы, как решить эту проблему? Любая попытка вызвать save(task)
вызывает сброс IllegalStateException
.
save(Task task)
в TaskService
, по сути, вызывает taskDao.save(Task task)
.
Я также подозревал, что неправильно@Id
аннотация (я имею в виду не из того пакета), но здесь дело не в этом.