jpa Sping Boot 与Kotlin和Jakarta Persistence:“不是托管类型”错误

yduiuuwa  于 8个月前  发布在  Kotlin
关注(0)|答案(1)|浏览(86)

我正在尝试使用Kotlin和Jakarta Persistence设置Sping Boot 项目。但是,我在尝试运行应用程序时遇到了一个错误:

错误原因:java.lang.IllegalArgumentException:不是托管类型:Clue类

项目设置

  • Sping Boot 版本:3.1.3
    线索实体
import com.jd.jtrivia.models.Category
import jakarta.persistence.*

@Entity
data class Clue(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long = 0,
    val question: String,
    val answer: String,
    @ManyToOne
    val category: Category
)

我已确保

  • Clue类用jakarta.persistence中的@Entity注解。
  • 所有相关的依赖项都来自Jakarta命名空间。
    项目结构
  • jtrivia
  • src
  • 主要
  • Kotlin
  • com.jd.trivia
  • JtriviaApplication.kt(@SpringBootApplication)
  • 模型
  • Clue.kt
  • Category.kt
  • 存储库
  • CategoryRepository.kt
  • ClueRepository.kt
  • DatabaseSeeder.kt
ftf50wuq

ftf50wuq1#

答案:

问题似乎与不正确的包导入有关。在使用JPA实体时,确保注解及其相关导入的一致性至关重要。
在我的例子中,JPA注解的正确导入是来自com.jd.jtrivia.models包,而不是com.jd.jtrivia.models.Category。固定实体声明如下:

package com.jd.jtrivia.models

import jakarta.persistence.*

@Entity
data class Clue(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long = 0,
    val question: String,
    val answer: String,
    @ManyToOne
    val category: Category
)

相关问题