#hibernate #jpa #hibernate-mapping
Вопрос:
Предположим, у меня есть таблица Students
, в которой есть столбцы varchar firstname
и varchar lastname
.
По какой-то причине в моем классе сущностей есть поля с разными именами, скажем String fname
, и String lname
.
Итак, как JPA правильно сопоставляет столбец с полем?
Ответ №1:
Вы можете использовать @Column
аннотацию, например
@Entity(name="Students") public class Students { @Column(name = "firstname") private String fname; @Column(name = "lastname") private String lname; }
Комментарии:
1. Также как JPA самостоятельно сопоставляет столбцы и поля с разными именами. Например, если имя столбца created_date и имя поля CreatedDate, то аннотация @Column не используется.
2. Если вы не используете
@Column
аннотацию, то имя столбца будет таким же, как имя поля Java.3. Я имел в виду, что у меня уже есть таблица с некоторыми столбцами. Как JPA затем сопоставляет поля с уже существующими столбцами с разными именами без @Column.
4. Я считаю, что в этом случае JPA не сможет выполнить сопоставление без
@Column
этого. Я предлагаю удалить вашу существующую таблицу и вместо этого позволить JPA настроить ее для вас. Затем, если вам нужно, заполните его данными за пределами вашего Java-приложения.5. Даже я думал так же, но в примере, который я привел в комментариях, даже без использования аннотации @Column я смог успешно сопоставить имя столбца created_date с именем поля CreatedDate. Вот чего я не понимал.