spring data jpa 自动生成数据库表的主键数据怎么定义成varchar类型

spring data jpa 自动生成数据库表的主键数据怎么定义成varchar类型

问题描述:

@Entity

@Table(name = "contract")

public class Contract implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name="contractNo",nullable=false,length=512)

private String contractNo;

@Column(name = "contract_year")

private String contractYear;

}

当我的contractNo定义成String类型是创建表数据的时候会报错,定义成int、Long、Integer类型就不会,要怎么设置才能创建varchar类型的数据表数据

补充上图:GeneratedValue 有两个属性,一个定义自增的策略,适用于基本类型的;另一个属性 generator是String类型的,用于自定义的属性,结合@GenericGenerator注解,GenericGenerator注解有两个属性,一个是name属性定义名称,一个是strategy策略属性,包含有13中策略,其中一个就是uuid策略;使用这个注解时,有一个注意的地方就是generator属性要与name属性的名称一致,并且同时使用两个注解。

virtualbox4.3.12

首先@Id注解表示这个属性对应数据库中的主键,@GeneratedValue(strategy = GenerationType.AUTO)注解表示这个主键策略是自增的,自增的;
所以只有数字类型的才可以则增,String是不能自增的。要是你想实现主键为varchar或者String就不要用自增策略,然后主键由代码生成设置
这个是MySQL数据库的,其他数据库不了解。你可以试试,希望对你有帮助