Jpa Micronaut数据:创建和保存新实体
我希望在应用程序启动期间保留新实体,如下所示:Jpa Micronaut数据:创建和保存新实体,jpa,kotlin,micronaut,Jpa,Kotlin,Micronaut,我希望在应用程序启动期间保留新实体,如下所示: class Application( private val bookRepository: BookRepository, ) { @EventListener fun init(event: StartupEvent) { val encyclopedia = BookEntity(0, "The sublime source of knowledge") val notebook = B
class Application(
private val bookRepository: BookRepository,
) {
@EventListener
fun init(event: StartupEvent) {
val encyclopedia = BookEntity(0, "The sublime source of knowledge")
val notebook = BookEntity(0, "Release your creativity!")
bookRepository.saveAll(listOf(encyclopedia, notebook))
}
}
根据这一点,应该可以工作,但由于某种原因,我得到了
javax.persistence.PersistenceException:org.hibernate.PersistentObjectException:Distached entity传递给persistent
exception。您将ID0
传递给BookEntity
构造函数,以指示它是一个新实体。它与JDBC一起工作,但是当您使用JPA时,0
必须与null
相关联。以下工作如预期:
class Application(
private val bookRepository: BookRepository,
) {
@EventListener
fun init(event: StartupEvent) {
val encyclopedia = BookEntity(null, "The sublime source of knowledge")
val notebook = BookEntity(null, "Release your creativity!")
bookRepository.saveAll(listOf(encyclopedia, notebook))
}
}
您的
BookEntity
构造函数的第一个参数是什么?是不是id
?是的,BookEntity
构造函数的第一个参数是id。我不知道为什么要这样做。为什么不在BookEntity
中有一个构造函数,它只接受字符串
参数,而将id
完全排除在构造函数之外呢?