📜  Spring Data JPA – @Column 注解(1)

📅  最后修改于: 2023-12-03 14:47:33.427000             🧑  作者: Mango

Spring Data JPA – @Column 注解

在 Spring Data JPA 中,@Column 注解用于指示实体类属性与数据库表列的映射关系。该注解提供了多个属性,用于定制列的定义和属性与列的映射关系。

用法

将 @Column 注解添加到实体类的属性上来映射到数据库表中的列。例如,以下代码将 name 属性映射到名为 name 的表列:

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;
    
    @Column(name = "name")
    private String name;

    // getters and setters
}

在这个例子中,@Column 注解包含 name 属性,该属性用于定义实体类属性与数据库表列的名称之间的映射关系。

属性

以下是 @Column 注解中可用的属性

| 属性 | 类型 | 描述 | |---------------|----------------------|--------------------------------------------------------------| | name | String | 指定属性与数据库表中的列名之间的映射关系 | | updatable | boolean | 指示该属性是否应包含在 SQL UPDATE 语句中 | | nullable | boolean | 指示该属性是否允许为 NULL 值 | | insertable | boolean | 指示该属性是否应包含在 SQL INSERT 语句中 | | columnDefinition | String | 定义在数据库中使用的列的完整类型 | | length | int | 定义列的长度 | | precision | int | 定义列的精度 (对于数字类型) | | scale | int | 定义列中的小数位数 (对于数字类型) | | table | String | 在执行联接的情况下,指定包含列的表名 |

示例

以下代码将说明 @Column 注解的更多用法:

@Entity
public class Book {

    @Id
    @GeneratedValue
    private Long id;
    
    @Column(name = "title", nullable = false, length = 100)
    private String title;

    @Column(name = "price", precision = 5, scale = 2)
    private BigDecimal price;

    @Column(name = "description", columnDefinition = "text")
    private String description;

    // getters and setters
}

在这个例子中,@Column 注解使用了以下属性:

  • name:指定属性与数据库表中的列名之间的映射关系。
  • nullable:指示该属性是否允许为 NULL 值。
  • length:定义列的长度。
  • precision:定义列的精度。
  • scale:定义列中的小数位数。
  • columnDefinition:定义在数据库中使用的列的完整类型。
总结

@Colum 注解是一个用来映射实体类与数据库表列的关系的非常有用的工具,同时也提供了多个属性来对列的定义和属性与列的映射关系进行定制化。根据实际需求选择合适的属性来使用可以帮助我们更高效地开发和维护应用程序。