Как JPA сопоставляет имя столбца с полем, если имя столбца отличается от имени поля?

#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. Вот чего я не понимал.