我对 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/