Повторный столбец в сопоставлении для сущности с @ManyToOne - PullRequest
0 голосов
/ 31 марта 2020

У меня есть две сущности, которые выдают ошибку при создании источника данных

Entity1

@NoArgsConstructor
@Entity
@Table(name = "person_details")
public class PersonDetails {
    @Id
    private String pid;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @Column(name = "exist_flag")
    private String existFlag;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "pid", nullable = false)
    private List<AddressDetails> addressDetails;
}

Entity 2 | РЕДАКТИРОВАТЬ 1

@Data
@NoArgsConstructor
@Entity
@Table(name = "address_details")
public class AddressDetails {

    private String street;

    @Column(name = "address_exist_flag")
    private String addressExistFlag;

    @ToString.Exclude
    @EqualsAndHashCode.Exclude
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "pid", insertable = false, updatable = false)
    private PersonDetails personDetails;

}

Получение ошибки, как показано ниже:

Я получаю сообщение об ошибке "Не указан идентификатор для объекта: AddressDetails".

Как разрешить в таком случае? Можем ли мы использовать пружинные данные jpa с отображением OneToMany в том случае, если у одного объекта нет первичного ключа?

1 Ответ

0 голосов
/ 31 марта 2020

Ошибка, которую вы получаете, состоит в том, что вы используете одно и то же имя столбца для 2 разных столбцов.

@Id
private String pid;

и

@JoinColumn(name = "pid"

означает, что вам нужен и ваш столбец идентификатора, и Ваш столбец внешнего ключа будет назван "pid", отсюда и ошибка. Я бы предложил использовать имя типа "addressDetailsFk" для атрибута JoinColumn.

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