Исключение: повторяющийся столбец в сопоставлении для сущности: column: ha sh (должно отображаться с помощью insert = "false" update = "false") - PullRequest
0 голосов
/ 15 апреля 2020

Я очень плохо знаком с фреймворком 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, и не понимаю, где код ошибается поскольку я не определил повторяющийся столбец в отображении

1 Ответ

1 голос
/ 15 апреля 2020

Вы должны иметь класс 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

}
...