代码之家  ›  专栏  ›  技术社区  ›  Kdeveloper

jpa:manytoone关系的默认列名映射

  •  23
  • Kdeveloper  · 技术社区  · 14 年前

    当我们上课时:

    @Entity
    Order implements Serializable {
        @Id
        private Integer id;
        ...
    }
    

    还有:

    @Entity
    OrderLine implements Serializable {
        @Id
        private Integer id;
    
        @ManyToOne
        Order order;
        ...
    }
    

    什么 行名 财产会吗 秩序 映射到?

    order_id, ORDER_ID or Order_id?

    (故意省略@joinColumn(name='order_id'))

    2 回复  |  直到 14 年前
        1
  •  24
  •   Pascal Thivent    14 年前

    下面是JPA1.0规范所写的关于 JoinColumn 注释:

    9.1.6 JoinColumn注释

    这个 name 注释元素定义 外键列的名称。 其余的注释元素 (以外) referencedColumnName ) 请参阅本栏,并具有相同的内容 列的语义 注释。

    如果有单个联接列,并且 如果 名称 批注成员是 缺少,联接列名称为 形成为 以下:引用的名称 关系属性或字段 引用实体;“名称” 引用的主键列。如果 没有这样的引用 关系属性或字段 实体(即使用联接表) 联接列名称的格式为 以下各项的串联: 实体名称;“名称” 引用的主键列。

    所以在您的示例中,外键列的默认名称是 order_id .

    工具书类

    • JPA 1.0规范
      • 第9.1.6节“JoinColumn注释”
        2
  •  20
  •   Oscar Chan    14 年前

    我可能不明白你的问题。但是,你不需要下面这样的东西吗?

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="order_id", nullable=false)
    Order order;
    

    here are some examples