Как использовать @OnetoMany с Embeddedid - PullRequest
2 голосов
/ 30 марта 2019

Я работаю над гибернацией и связываю сопоставление со связью @OneToMany с составным ключом.Ниже приведены объекты, которые в настоящее время я использую.

@Embeddable
@Getter
@Setter
public class AddressKey implements Serializable {

    private static final long serialVersionUID = -307823488229761699L;

    @Column(name = "id")
    private Long id;

    @Column(name = "city")
    private Long city;

    @Column(name = "locale")
    private String locale;

    @Column(name = "type")
    private String type;

    @ManyToOne
    @JoinColumn(name="id")
    private Person person;
}

@Entity
@Table(name = "address", schema = "test")
@Setter
@Getter
public class AddressHistory {

    @EmbeddedId
    private AddressKey key;

    @Column(name = "active")
    private boolean active;

    @Column(name = "current")
    private boolean current;

}


@Entity
@Table(name = "person", schema="test")
@ToString
public class Person {

    @Id
    @Column(name = "id")
    private Long id;

    @OneToMany(mappedBy="key.person", fetch=FetchType.EAGER, cascade=CascadeType.ALL)
    private Set<AddressHistory> addressHistory;
}

Но когда я пытаюсь запустить эту программу, она выдает мне следующую ошибку.

повторный столбец в сопоставлении для объекта AddressHistory.

Кто-то, помогите мне исправить это, что не так в этом отображении.Заранее спасибо

1 Ответ

0 голосов
/ 30 марта 2019

Вы повторили столбцы.Удалите @JoinColumn (name = "id") в AddressKey, так как у вас уже есть один столбец с таким же именем или переименуйте его в другое, более удобное для обслуживания, например, person_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...