首页 > 解决方案 > JPA 实体映射上的重复列映射

问题描述

我花了一整天的时间试图了解正在发生的事情并找到解决方法。我有一个 JPA 映射实体,除了其他属性外,它还具有以下内容:

   @Entity
   @Table(name = "xyz")
   data class XYZ(
      ...
      @Column(name = "status", nulable = false)
      @Enumerated(EnumType.STRING)
      private var initialStatus: XYZStatus,
      ...
    ) {
        @Transient
        var status: XYZStatus = initialStatus
            get() = initialStatus
            set(nextStatus) {
                ...
                initialStatus = nextStatus
                field = nextStatus
            }
    }

自此类首次创建以来,这一直有效。现在的情况是,每次我在 Intellij IDEA(Ultimate 2018.2)上运行集成测试时,它们都会失败,因为无法创建 Spring 上下文。错误是:Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: model.XYZ column: status (should be mapped with insert="false" update="false")

奇怪的部分:这个错误只发生在我的机器上,只有在从 IDE 内部运行测试时才会发生。如果我在命令行上通过 Maven 运行测试就可以了。我已经尝试将字段名称从status更改为其他名称,而错误只是更改了我给变量的“其他”名称。

我已经删除并再次克隆了我的回购。已经删除并重新安装了 Intellij。我真的不知道这个错误的根源是什么。有任何想法吗?

谢谢!

标签: spring-bootjpaintellij-ideakotlintransient

解决方案


推荐阅读