Ric*_*ick 6 java postgresql spring-data-r2dbc
我有一个简单的实体,由两个 UUID 组成:
\n@Table("library")\npublic class LibraryDao {\n @Id\n private UUID id;\n @NonNull\n private UUID ownerId;\n}\n
Run Code Online (Sandbox Code Playgroud)\n我在 PostgreSQL 中有一个对应的表:
\nCREATE TABLE IF NOT EXISTS library (id UUID PRIMARY KEY, owner_id UUID NOT NULL);\n
Run Code Online (Sandbox Code Playgroud)\n我正在使用正确的 R2DBC 驱动程序(io.r2dbc:r2dbc-postgresql
和org.postgresql:postgresql
)。
至此,一切正常。我的应用程序运行。但是\xe2\x80\xa6
\n因为 PostgreSQL 至少根据文档 \xe2\x80\x93 没有 UUID 自动生成功能,所以我在创建新实例时设置了 id LibraryDao
。
但是,当我save
在存储库中调用该方法时,出现异常:Failed to update table [library]. Row with Id [0ed4d7c0-871a-4473-8997-4c9c1ec67a00] does not exist.
似乎save
被解释为,如果它不存在则update
不会回退。insert
我该如何将新记录插入数据库?
\n尽管有 PostgreSQL 文档,但还是有一种方法可以使用 pgcrypto 扩展(适用于 v4 UUID)自动生成 UUID。(基于使用 pgAdmin GUI 的过程。)
在查询工具中:
select * from pg_extension
并检查 pgcrypto 是否未列出。create extension pgcrypto
安装它;它带有默认安装。然后,将列定义更改为... id UUID PRIMARY KEY DEFAULT gen_random_uuid(), ...
它有效。
归档时间: |
|
查看次数: |
7663 次 |
最近记录: |