java - 带有“默认 NEWID()”的 SQL Server UNIQUEIDENTIFIER 的 JPA 映射
问题描述
我正在努力将 JPA 映射实体(通过 Spring Data CrudRepository
)插入到 SQL Server 2019 上的表中,该表具有类型的主键列UNIQUEIDENTIFIER
和默认值为NEWID()
.
CREATE TABLE some_table
(
id UNIQUEIDENTIFIER not null primary key default NEWID(),
-- ...
)
问题是我设法开始工作的所有变体都涉及 JPA/Hibernate 端的 UUID 生成器,我最终在表和保存的 JPA 实体对象中有两个不同的 UUID 值。
例如,这个映射在没有错误报告的意义上“有效”,但保存的实体对象的id
字段包含的 UUID 与在基础表中保存为 PK 值的 UUID 不同。
@Entity
@Table(name = "some_table")
public class MyEntity {
@Id
@Column(columnDefinition = "uniqueidentifier")
@GeneratedValue
private UUID id;
// ...
}
// id field not set
myEntityRepository.save(myEntity);
// if field set, but value differs from DB
使用@GeneratedValue (strategy = GenerationType.IDENTITY)
产生一个
org.hibernate.id.IdentifierGenerationException: unrecognized id type : uuid-binary -> java.util.UUID
尽管列定义。
如何设置映射以正确获取 SQL Server 生成的 UUID 值或存储 Hibernate 生成器策略生成的 UUID 值?
解决方案
推荐阅读
- c++ - 调用 shared_ptr 对象方法
- jquery - jQuery 在 Edge 中无法使用的天数
- angular - Angular Spring Oauth2无效的凭据
- python-3.x - 绘制圆弧的 y 值
- c# - 当我使用变量时使用 ExecuteScalar() 选择不起作用,总是返回空,当我不使用变量时它起作用 - C#
- flutter - 我的 RenderFlex 底部溢出了 57 个像素
- c# - 嵌套静态类的属性
- themes - 如何使用带有 Novela 主题的 Netlify CMS?
- javascript - 如果存在则附加 url 参数,如果不存在则添加 jQuery
- javascript - 如何使图像可点击以显示子集 Dataframe ?(R 闪亮)