jpa - 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 = BookEntity(0, "Release your creativity!")
        bookRepository.saveAll(listOf(encyclopedia, notebook))
    }
}

根据the documentation,这应该可以工作,但是由于某种原因,我收到了javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist异常。

最佳答案

您将ID 0传递给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))
    }
}

关于jpa - Micronaut数据:创建并保存新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57445283/

相关文章:

android - 如何调用Kotlin中具有参数的传递方法?

swift - Kotlin 或 Swift 中的可调用对象

java - Android Room 在 'incoming foreign key list' 中获取 'embedded entity' 中的元素计数?

java - 如何从 Micronaut 中的 Controller 调用另一个 Rest api

hibernate - 本地插入后如何获取新的记录ID

java - Hibernate 提示@OneToOne 中的空@Id,即使它不是空的

java - 尝试进行 Maven 全新安装时,persistence.xml 文件出现问题

jpa - Micronaut CRUD 操作与实体管理器不适用于具有外键的表

http-status-codes - 如何使用 Micronaut 客户端接受自定义 HTTP 错误代码?

java - 由 : org. hibernate.AnnotationException 引起:@OneToOne 或 @ManyToOne on