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;