当前位置: 首页 > 面试题库 >

JPA:如何映射SQL Server uniqueidentifier类型

訾俊名
2023-03-14
问题内容

我继承了一个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代码段将PostgreSQL货币类型映射到java.util.Currency类型时遇到问题: 列cafl\u预算金额是PostgreSQL中的货币类型。 当代码以7.1.1的形式部署到JBoss中时,我得到了本文末尾显示的跟踪。有人处理过那张地图吗?

  • 问题内容: 我一直在研究一个非常简单的JPA示例,并试图将其调整为现有数据库。但是我无法克服这个错误。(下面。)这只是我没看到的一些简单的事情。 在下面的DocumentManager类中(一个简单的servlet,因为这是我的目标),它做了两件事: 插入一行 返回所有行 插入效果很好-一切都很好。问题出在检索上。我尝试了各种参数值,但没有走运,并且尝试了各种更复杂的类注释(如列类型),但都没有成

  • 主要内容:集合映射实例,程序输出结果是一个接口,其中一个唯一键与每个值对象相关联。 因此,搜索,更新,删除等操作都是基于键来进行的。 完整的项目目录结构如下所示 - 集合映射实例 在这个例子中,我们将一个对象嵌入到一个实体类中,并将其定义为一个集合类型 - 。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,这个类包含员工, 和嵌入对象(员工地址)。注解 表示嵌入对象。 文件:Employee.java 的代码如下所示 -

  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例

  • 我正在使用JPA编写一个Java EE应用程序,它需要国际化。为此,我创建了一个名为multilingarstring的类,该类将语言与字符串相关联(并扩展了HashMap 现在,假设我们有一个实体,它根据语言的不同有不同的名称: 此代码生成以下数据库模式: 这几乎是好事。 此实现的问题是重复字段上的和方法上的(每次需要在数据库BTW中映射时都必须重新编写:每个实体类至少1个)。在我看来,它使代码

  • 问题内容: 如何在不使用Hibernate类的情况下在JPA中映射Map? 问题答案: 以下内容对您没有帮助吗? 可以是任何实体类型,包括。