我一直在休眠中处理一些关系问题,在这里我得到了表之间关系的解决方案,我尝试了它很好,但是当我删除 @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;
}
答案 0 :(得分:2)
Hibernate应该反映数据库结构, 您应该阅读有关importance of foreign key
的信息
- 参照完整性
- 更轻松的侦探工作
- 更好的表现
答案 1 :(得分:1)
如果您阅读@ForeignKey
的Javadoc,则会发现:
用于指定外键约束的处理方式,有效的方案生成时。如果未指定此批注,则将使用持久性提供程序的默认外键策略。
如果您不是根据类定义(例如CREATE TABLE
SQL语句)生成数据库架构的,则注释无效。