JPA:如何映射SQL Server uniqueidentifier类型

我inheritance了一个我试图通过JPA映射的SQL Server数据库。 许多表都有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类指定。 根据hibernate提供的SQLServerDialect ,它没有任何映射到uniqueidentifier数据类型,默认情况下String映射到varchar(255)

我认为String主键上的guid策略只意味着hibernate将为POJO的主键属性生成GUID值,并且此生成的GUID值将插入varchar(255)列以模拟uniqueidentifier的效果

您可以尝试使用@Column的columnDefinition属性覆盖Dialect类指定的映射

  @Id @GenericGenerator(name = "generator", strategy = "guid", parameters = {}) @GeneratedValue(generator = "generator") @Column(name = "APPLICATION_ID" , columnDefinition="uniqueidentifier") private String id;