在 Spring Boot 应用程序中,我们使用
@NaturalId
作为 isbn
字段,如下所示:
@Entity
public class Book {
@Id
private Long id;
@NaturalId
@Column(nullable = false, unique = true)
private String isbn;
@Column(length = 50, nullable = false)
private String name;
}
我将使用一种方法,例如
findByIsbn(String isbn)
。那么,我是否需要为 isbn
注释的 @NaturalId
字段添加索引(通过注释或 sql 脚本)?
为一对多/多对一关系映射 2 个表的
isbn
字段是个坏主意吗?
由于isbn有唯一约束,这个约束会被用作索引,所以你不需要额外的索引。
您可以在多对一关系中使用任何唯一的列,hibernate 支持它。您可以使用 @JoinColumn(referencedColumnName = "isbn") 来引用它。而且我认为这样做没有任何缺点。