为什么我们使用@ForeignKey(name =“ FK_COUNTRY”)批注?

时间:2019-03-17 08:29:54

标签: java hibernate entity

我一直在休眠中处理一些关系问题,在这里我得到了表之间关系的解决方案,我尝试了它很好,但是当我删除 @ForeignKey(name =“ FK_COUNTRY”)时,没有任何变化那么为什么我们要使用这种标注是最佳实践呢?

@Entity
    @Table(name = "state")
    public class State {
        @Id
        @Column(name = "id")
        private int id;

        @Column(name = "name")
        private String name;

        @ManyToOne
        @ForeignKey(name="FK_COUNTRY")
        private Country country;
    }

2 个答案:

答案 0 :(得分:2)

Hibernate应该反映数据库结构, 您应该阅读有关importance of foreign key

的信息
  
      
  1. 参照完整性
  2.   
  3. 更轻松的侦探工作
  4.   
  5. 更好的表现
  6.   

答案 1 :(得分:1)

如果您阅读@ForeignKey的Javadoc,则会发现:

  

用于指定外键约束的处理方式,有效的方案生成时。如果未指定此批注,则将使用持久性提供程序的默认外键策略。

如果您不是根据类定义(例如CREATE TABLE SQL语句)生成数据库架构的,则注释无效。