java - 异常(exception):实体映射中的重复列:列:哈希(应使用 insert ="false"update ="false"进行映射)

标签 java spring hibernate exception lombok

我对 Hibernate 框架非常陌生,在运行代码时遇到异常:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.hibernate.SessionFactory]: Factory method 'sessionFactory' threw exception; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: LeiRecord column: hash (should be mapped with insert="false" update="false")

我在 SpringConfiguration、oracleDataDao 的很多地方都遇到了这个错误,并且不明白代码哪里出错了,因为我没有在映射中定义重复列

最佳答案

您应该将 Address 类注释为 @Embeddable,然后在 LeiRecord 实体中为 addressLegal 引用其实例和addressHeadquearters

@Embeddable
@Getter
@Setter
public class Address {

   private String firstAddr;
   private String nextAddr;
   //... etc.
}

@Getter
@Data
@Entity
@Table(name = "BK_TEST")
@Immutable
public class LeiRecord {
// ...
    @Embedded
    @AttributeOverrides(
        {
            @AttributeOverride(name = "firstAddr",   column = @Column(name = "legalAddress_firstAddr")),
            @AttributeOverride(name = "nextAddr",    column = @Column(name = "legalAddress_nextAddr")),
            @AttributeOverride(name = "region",      column = @Column(name = "legalAddress_region")),
            @AttributeOverride(name = "postalCode",  column = @Column(name = "legalAddress_postalCode")),
            @AttributeOverride(name = "city",        column = @Column(name = "legalAddress_city")),
            @AttributeOverride(name = "country",     column = @Column(name = "legalAddress_country")),
            @AttributeOverride(name = "mailRouting", column = @Column(name = "legalAddress_mailRouting"))
        }
    )
    private Address addressLegal;

    @Embedded
    @AttributeOverrides(
        {
            @AttributeOverride(name = "firstAddr",   column = @Column(name = "headquartersAddress_firstAddr")),
            @AttributeOverride(name = "nextAddr",    column = @Column(name = "headquartersAddress_nextAddr")),
            @AttributeOverride(name = "region",      column = @Column(name = "headquartersAddress_region")),
            @AttributeOverride(name = "postalCode",  column = @Column(name = "headquartersAddress_postalCode")),
            @AttributeOverride(name = "city",        column = @Column(name = "headquartersAddress_city")),
            @AttributeOverride(name = "country",     column = @Column(name = "headquartersAddress_country")),
            @AttributeOverride(name = "mailRouting", column = @Column(name = "headquartersAddr_mailRouting"))
        }
    )
    private Address addressHeadquarters;

    //... other entity fields

}

关于java - 异常(exception):实体映射中的重复列:列:哈希(应使用 insert ="false"update ="false"进行映射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61232181/

相关文章:

java - 等于持久对象

java - 如何在 Java 中声明动态字符串数组

mysql - 插入日期字段mysql、struts2 spring hibernate

java - 如何设置 ListPreference 的默认值

java - 类路径资源 [spring/config/BeanLocations.xml] 无法打开,因为它不存在

java - 使用 MyBatis 返回对象内部对象的列表

Spring MVC : bind hash map with same/different value depending on user input

hibernate - Kotlin Hibernate OneToOne fetchtype.LAZY 立即运行所有查询

java - Dropwizard 错误 405 HTTP 方法 POST Json

java - 解析 HTML 网页