Повторный столбец в отображении для объекта с гибернацией - PullRequest
0 голосов
/ 15 мая 2019

Я использую Hibernate, чтобы сделать проект.И у меня проблема с моим отображением.Я получил эту ошибку:

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: org.el_dao.entity.Save column: idModel (should be mapped with insert="false" update="false")

Вот сущность:

@Embeddable
public class SaveId implements Serializable{

    private static final long serialVersionUID = 1L;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "login", referencedColumnName = "login")
    private User login;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name = "idStep", referencedColumnName = "idStep", insertable=false, updatable=false),
        @JoinColumn(name = "idModel3", referencedColumnName = "idModel", insertable=false, updatable=false),
        @JoinColumn(name = "idPart2", referencedColumnName = "idPart", insertable=false, updatable=false),
        @JoinColumn(name = "idPiece", referencedColumnName = "idPiece", insertable=false, updatable=false)
    })
    private Step idStep;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name = "idPart", referencedColumnName = "idPart", insertable=false, updatable=false),
        @JoinColumn(name = "idModel", referencedColumnName = "idModel", insertable=false, updatable=false)
    })
    private Part idPart;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "idModel", referencedColumnName = "idModel", insertable=false,  updatable=false)
    private Model idModel;

И сущность, которая использует предыдущую:

@Entity
@Proxy(lazy = false)
@Table(name = "save", schema = "public")
public class Save implements Serializable{

    private static final long serialVersionUID = 1L;

    /**
     * Save's id
     */
    @EmbeddedId
    private SaveId saveId;

Я уже использовалнесколько вариантов безрезультатно, например, добавление вставки и обновление в false.

1 Ответ

0 голосов
/ 15 мая 2019

Согласно документации Hibernate:

Каждое из постоянных свойств или полей внедренного объекта сопоставляется с таблицей базы данных для сущности.

Итак, вВ вашем случае сущность Save будет иметь два столбца с именем idModel, поэтому hibernate жалуется.Вам следует изменить имя одного из столбцов соединения, например:

 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "idModel2", referencedColumnName = "idModel", insertable=false,  updatable=false)
    private Model idModel;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...