Запросить руководство по ошибке в Spring Boot Framework - PullRequest
0 голосов
/ 02 апреля 2020

Привет, я реализую REST API, используя эту платформу. Я использую язык Kotlin. После создания связей между таблицами с помощью инструмента «Почтальон» я отправляю Json на сервер и связанную конечную точку со следующей структурой: Категория Json

{
    "title" :"Sport"
}

После Получив его, я столкнусь со следующей ошибкой. Сообщение об ошибке выглядит следующим образом:

{
    "timestamp": "2020-04-01T21:28:22.631+0000",
    "status": 400,
    "error": "Bad Request",
    "message": "JSON parse error: No Object Id found for an instance of `ir.vahidgarousi.app.farzin.modules.posts.models.Category`, to assign to property 'id'; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: No Object Id found for an instance of `ir.vahidgarousi.app.farzin.modules.posts.models.Category`, to assign to property 'id'\n at [Source: (PushbackInputStream); line: 3, column: 1] (through reference chain: ir.vahidgarousi.app.farzin.modules.posts.models.Category[\"id\"])",
    "path": "/category/"
}

дополнительная информация:

Категория объекта:

@Entity
@Table(name = "categories_tbl")
@JsonIdentityInfo(
  generator = ObjectIdGenerators.PropertyGenerator::class,
  property = "id")
data class Category(
  @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null,
  @ManyToMany(mappedBy = "categories")
  var posts: List<Post> = mutableListOf(),
  var title: String,
  @Column(name = "created_at")
  var createdAt: LocalDateTime = LocalDateTime.now(),
  @Column(name = "updated_at")
  var updatedAt: LocalDateTime = LocalDateTime.now()
)

Сообщение объекта:

@Entity
@Table(name = "posts_table")
@JsonIdentityInfo(
  generator = ObjectIdGenerators.PropertyGenerator::class,
  property = "id")
data class Post(
  @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null,
  @ManyToOne
  @JsonManagedReference
  var user: User,
  @ManyToMany
  @JoinTable(name = "post_catefories")
  var categories: List<Category> = mutableListOf(),
  var title: String,
  var body: String,
  var cover: String,
  @Column(name = "created_at")
  var createdAt: LocalDateTime = LocalDateTime.now(),
  @Column(name = "updated_at")
  var updatedAt: LocalDateTime = LocalDateTime.now()
)

CategoryController:

@RestController
@RequestMapping("/category")
class CategoryController @Autowired constructor(private val categoryService : CategoryService) {

  @RequestMapping(*["/", ""], method = [RequestMethod.GET])
  fun getCategories(): List<Category> {
    return categoryService.getAll()
  }

  @RequestMapping(*["/", ""], method = [RequestMethod.POST])
  fun addCategory(@RequestBody category: Category): Category {
    return categoryService.addCategory(category)
  }
}

CategoryService:

@Service
class CategoryService @Autowired constructor(val categoryRepository: CategoryRepository) {
  fun getAll(): List<Category> {
    return categoryRepository.findAll()
  }
  fun addCategory(category : Category) : Category {
    return  categoryRepository.save(category)
  }
}

Репозиторий категорий :

@Repository
interface CategoryRepository: JpaRepository<Category, Long> {
}

application.properties

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3308/*
spring.datasource.username=root
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

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