【问题标题】:Customized naming of columns in JPA relationshipsJPA 关系中列的自定义命名
【发布时间】:2010-09-18 02:59:38
【问题描述】:

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

JPA 可以做到这一点吗?

【问题讨论】:

    标签: java hibernate jpa entity-relationship


    【解决方案1】:

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

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

    因此,列名将是“actionplanid”。

    【讨论】:

    • 只要确保将其放在多端即可。如果不是,我发现它不起作用;-)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多