Настраиваемое именование столбцов в отношениях JPA - PullRequest
1 голос
/ 20 октября 2008

Когда я устанавливаю отношения с JPA, используя hibernate, генерируются ужасные длинные и неприятные имена столбцов.
Например. У меня есть следующее actionPlan_actionPlanPK, что означает, что столбец actionPlan является FK, который указывает на actionPlanPK.
Чтобы это выглядело немного более аккуратно в БД, я бы хотел, чтобы я сам дал ему имя, предпочтительно просто имя, которое оно имеет в классе сущностей, которому принадлежат отношения.

Возможно ли это с JPA?

Ответы [ 2 ]

3 голосов
/ 20 октября 2008

Эта возможность является частью спецификации JPA и позволяет именовать многие из ваших структур базы данных в аннотациях. К ним относятся:

Назовите вашу таблицу следующим образом:

@Entity
@Table(name="better_table_name")
public class MyConvolutedClassName {
}

Называя ваши столбцы следующим образом:

@Column(name="better_column_name")
private Date myConvolutedDateColumn;

Наименование столбцов, являющихся частью отношений:

@ManyToOne
@JoinColumn(name="better_join_column_name")
private ClassName otherModelClass;

Для аннотаций EJB 3.0 (включая JPA) доступна отличная (хотя и не совсем современная) шпаргалка по адресу http://www.fnogol.de/media/ejb3.0-anno-cheat-1.2.pdf.

3 голосов
/ 20 октября 2008

Да. Можно указать собственное имя для столбца, если вы не удовлетворены именами по умолчанию. Например, в классе со ссылкой на ActionPlan вы можете указать:

@ManyToOne
@JoinColumn(name="actionplanId")
public ActionPlan getActionPlan(){

}

И, таким образом, имя столбца будет "actionplanid".

...