JPA关系中列的自定义命名

时间:2008-10-20 13:53:49

标签: java hibernate jpa entity-relationship

当我使用hibernate与JPA建立关系时,会生成一些可怕的长而笨拙的列名。
例如。我有以下actionPlan_actionPlanPK,这意味着列actionPlan是指向actionPlanPK的FK。
为了让它在数据库中看起来更整洁,我希望自己可以给它一个名字,最好只是它拥有该关系的实体类中的名称。

这可以用JPA吗?

2 个答案:

答案 0 :(得分:3)

是。如果您对默认名称不满意,可以为列指定自己的名称。例如,在引用ActionPlan的类中,您可以指定:

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

}

因此,列名称将是“actionplanid”。

答案 1 :(得分:3)

此功能是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)的备忘单。