JPA:如何映射SQL Server uniqueidentifier类型

我继承了一个SQL Server数据库,该数据库正试图通过JPA进行映射。许多表都有一uniqueidentifier列。我试图像这样映射它们:

@Id

@GenericGenerator(name = "generator", strategy = "guid", parameters = {})

@GeneratedValue(generator = "generator")

@Column(name = "APPLICATION_ID")

private String id;

Hibernate抱怨:

Found: uniqueidentifier, expected: varchar(255)

回答:

POJO中主键属性的数据类型确定其映射DB列的数据类型,这由Dialect类指定。按照SQLServerDialect由Hibernate提供,它不具有任何数据类型映射到uniqueidentifier,并且String在默认情况下映射到varchar(255)

我认为

guid基于String主键的策略仅意味着hibernate将为POJO的主键属性生成一个GUID值,并且此生成的GUID值将被插入到varchar(255)列中以模拟uniqueidentifier

你可以尝试覆盖由指定的映射方言使用类columnDefinition属性@Column

 @Id

@GenericGenerator(name = "generator", strategy = "guid", parameters = {})

@GeneratedValue(generator = "generator")

@Column(name = "APPLICATION_ID" , columnDefinition="uniqueidentifier")

private String id;

以上是 JPA:如何映射SQL Server uniqueidentifier类型 的全部内容, 来源链接: utcz.com/qa/413694.html

回到顶部