повторяющийся столбец в сопоставлении для объекта несколькими сопоставления - PullRequest
0 голосов
/ 01 ноября 2018

Я не понимаю, почему я все еще получаю hibernate.MappingException :

Repeated column in mapping for entity: PanelCategoryOption column: category_id (should be mapped with insert="false" update="false")

PanelCategoryOption mapping

@Entity
@Table(name = "eq_panel_category_option")
public class PanelCategoryOption {

    @EmbeddedId
    private PanelCategoryOptionId id;    
}

PanelCategoryOptionId mapping

@Embeddable
public class PanelCategoryOptionId implements Serializable {

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumns({
                @JoinColumn(name = "panel_id", referencedColumnName = "panel_id"),
                @JoinColumn(name = "category_id", referencedColumnName = "category_id")})
        private PanelCategory panelCategory;

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumns({
                @JoinColumn(name = "category_option_id", referencedColumnName = "id", insertable = false, updatable = false),
                @JoinColumn(name = "category_id", referencedColumnName = "category_id", insertable = false, updatable = false)})
        private CategoryOption categoryOption;

}

Схема

enter image description here

1 Ответ

0 голосов
/ 02 ноября 2018

Почему у вас есть ссылка на category_id в таблице PanelCategoryOption. Это не нормализованный дизайн базы данных, поскольку он не выполняет форму Second Normal. Попробуйте обновить дизайн базы данных.

Также, если вы не хотите менять дизайн БД, вам нужно внести следующие изменения,

  @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
            @JoinColumn(name = "category_option_id", referencedColumnName = "id", insertable = false, updatable = false) })
    private CategoryOption categoryOption;

 @JoinColumns({
                @JoinColumn(name = "category_id", referencedColumnName = "category_id", insertable = false, updatable = false)})
 private Category category;
...