当我使用 hibernate 与 JPA 建立关系时,会生成一些可怕的长且 ackward 的列名。
例如。我有以下内容actionPlan_actionPlanPK
,这意味着该列actionPlan
是指向的 FK actionPlanPK
。
为了使它在数据库中看起来更整洁一点,我希望我可以自己给它一个名称,最好只是它在拥有关系的实体类中的名称。
JPA可以做到这一点吗?
当我使用 hibernate 与 JPA 建立关系时,会生成一些可怕的长且 ackward 的列名。
例如。我有以下内容actionPlan_actionPlanPK
,这意味着该列actionPlan
是指向的 FK actionPlanPK
。
为了使它在数据库中看起来更整洁一点,我希望我可以自己给它一个名称,最好只是它在拥有关系的实体类中的名称。
JPA可以做到这一点吗?
是的。如果您对默认名称不满意,可以为列指定您自己的名称。例如,在引用 ActionPlan 的类中,您可以指定:
@ManyToOne
@JoinColumn(name="actionplanId")
public ActionPlan getActionPlan(){
}
因此,列名将是“actionplanid”。
此功能是 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;
在http://www.fnogol.de/media/ejb3.0-anno-cheat-1.2.pdf上有一个很棒的(虽然不是最新的)EJB 3.0 注释(包括 JPA)备忘单。