- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用纯 JPA 保存实体,但保存时未返回 Postgres UUID
字段。默认情况下,UUID
字段是使用 public.uuid_generate_v1mc()
自动生成的。我使用 postgres 作为数据库,由于某种原因,在 jpa 中保存时创建的默认值不会返回。我尝试添加一个 @Generate
字段并将其设置为自动,但这没有任何作用。
我做错了什么吗?
数据库创建语句
CREATE TABLE usermgmt.test
(
id SERIAL PRIMARY KEY,
active boolean NOT NULL DEFAULT false,
created timestamp without time zone NOT NULL DEFAULT now(),
updated timestamp without time zone NOT NULL DEFAULT now(),
description character varying,
name character varying NOT NULL,
external_id bigint UNIQUE ,
uuid uuid DEFAULT public.uuid_generate_v1mc(),
alias character varying NOT NULL UNIQUE,
code character varying NOT NULL UNIQUE
);
实体
@SuppressWarnings("serial")
@Entity(name = "managementTest")
@Cacheable
@Table(schema = "usermgmt", name = "test")
public class Test extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String description;
@Column(nullable = false, insertable = false, updatable = false)
private UUID uuid;
@Column(nullable = false, unique = true)
private String alias;
@Column(nullable = false, unique = true)
private String code;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return
*/
public String getDescription() {
return description;
}
/**
* @param description
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the uuid
*/
public UUID getUuid() {
return uuid;
}
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
基础实体
@MappedSuperclass
public abstract class BaseEntity {
private LocalDateTime created;
private LocalDateTime updated;
@NotNull
private Boolean active;
public BaseEntity() {
this.active = Boolean.TRUE;
}
@PrePersist
@PreUpdate
void setDates() {
if (this.created == null) {
this.created = LocalDateTime.now();
}
this.updated = LocalDateTime.now();
}
public Boolean getActive() {
return this.active;
}
public void setActive(Boolean active) {
this.active = active;
}
public LocalDateTime getCreated() {
return this.created;
}
public LocalDateTime getUpdated() {
return this.updated;
}
public void setUpdated(LocalDateTime updated) {
this.updated = updated;
}
public void touch() {
this.updated = LocalDateTime.now();
}
}
原油
@Repository("managementTestCrudRepository")
public interface TestCrudRepository extends JpaRepository<Test, Long> {
Test findByCode(String code);
Test findByUuid(UUID uuid);
Test findByAlias(String alias);
List<Test> findByActive(Boolean active);
}
这是我用来保存实体的方法
@PutMapping
public Test putByJson(@RequestBody String json) {
return testCrudRepository.save(new Gson().fromJson(json, Test.class));
}
postman 中返回的对象
{
"created": {
"month": "OCTOBER",
"year": 2018,
"dayOfYear": 275,
"hour": 11,
"minute": 9,
"nano": 325000000,
"second": 52,
"dayOfMonth": 2,
"dayOfWeek": "TUESDAY",
"monthValue": 10,
"chronology": {
"id": "ISO",
"calendarType": "iso8601"
}
},
"updated": {
"month": "OCTOBER",
"year": 2018,
"dayOfYear": 275,
"hour": 11,
"minute": 9,
"nano": 329000000,
"second": 52,
"dayOfMonth": 2,
"dayOfWeek": "TUESDAY",
"monthValue": 10,
"chronology": {
"id": "ISO",
"calendarType": "iso8601"
}
},
"active": true,
"id": 2,
"externalId": null,
"name": "test1",
"description": "test1",
"uuid": null,
"alias": "test1",
"code": "test1"
}
最佳答案
您需要添加 @Generated
对数据库将生成的字段进行注释。
@Generated(GenerationTime.ALWAYS)
private UUID uuid;
您需要找到一种方法来告诉您的 JPA 提供商 (1) 在数据库端生成的字段以及 (2) 何时获取它们。
对于此类属性,有一个名为 @Generated
的注释。它提供了两个选项:
GenerationTime.INSERT
);GenerationTime.ALWAYS
)。为了检索所需的 @Generate
值,Hibernate(Spring 将其用作默认 JPA 提供程序)将执行附加的 SELECT
语句。
我不知道您将使用 PUT
端点来做什么(创建/更新/覆盖资源1),但我会选择 @Generate(ALWAYS)
因为,使用 @Generate(INSERT)
,您在更新/合并时将得到 null
。
我发现这个视频内容丰富且切题。
关于java - Spring JPA Crud 存储库保存不返回 UUID 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52612241/
我试图再次将反射的 UUID 转换回实际的 UUID 对象,但找不到方法,当我打印反射值时它看起来是正确的,但在尝试转换时我找不到方法。 package main import ( "fmt"
我想知道 UUID 是否是唯一的,即使它们是在不同的系统上生成的,这些系统可能采用不同的算法。例如,如果您在 MySQL 和 .Net 中生成了一堆 UUID,碰撞的可能性会更高,还是所有系统都使用完
是否可以一个接一个地创建两个重复的 UUID?我不熟悉 UUID 是如何生成的,但我猜想如果您在同一毫秒内从同一 MAC 地址创建了两个单独的 UUID,那么它们将完全相同。这是真的吗? 我想我是在问
当我使用 python uuid 模块中的 UUID() 函数检查我们的测试 uuid 之一时,我遇到了这种奇怪的行为。 从 uuid 导入 UUID uuid1 = UUID('00000000-0
开始使用 java.util.UUID。我的问题是如果我有两个 UUID 变量,比如 u1 和 u2,并且我想检查它们是否相等,我可以安全地使用表达式 u1 == u2 还是必须编写 u1 .equa
我浏览了 python UUID 模块的文档。 >>> uuid.uuid4() UUID('82fe5629-6680-4b13-a4e3-7a082f10e038') >>> uuid.uuid4
我正在创建一个程序,我在其中大量使用 UUID 来识别用户和组等内容。鉴于 UUID 已经被占用的可能性极低,我是否应该担心发生碰撞的可能性? 最佳答案 这在很大程度上取决于 A)您的要求 B)底层实
您应该使用哪个版本的 UUID?我看到很多帖子解释了每个版本的含义,但我很难弄清楚什么最适合哪些应用程序。 最佳答案 有两种不同的方式生成 UUID。 如果您只需要一个唯一 ID,则需要版本 1 或版
我知道我们可以轻松提取 uuid 版本号。有没有可靠的方法来提取时间戳、MAC 地址等信息? 谢谢! 最佳答案 符合标准的 UUID 可能是多种变体之一,它看起来像这样: AAAAAAAA-BBBB-
我可以干净地使用私有(private) UUID 变体/版本吗? 我使用我基本上认为是大整数的随机 UUID。现在,我想生成一个“私有(private)”UUID,它不基于众所周知的 5 个变体/版本
我已阅读 man 页面,但我不明白 name 和 namespace 的用途。 For version 3 and version 5 UUIDs the additional command lin
我目前正在项目中使用 boost::uuids::uuid,并且我想序列化包含 boost::uuids::uuid 的对象。我尝试了下面的简单示例,但出现错误: /usr/include/boost
我正在使用 Datastax Java 驱动程序在 Cassandra 数据库中执行基本的插入语句。我的主键列是uuid类型。从我在官方文档中看到的,在 Cassandra 中调用 uuid() 函数
会抛出异常吗? UUID() 是否会悄无声息地失败?是否有任何情况下“myStatus”来自 myStatus = True myUUID = uuid.UUID( someWeirdValue )
在我的 Android 应用程序中,我有这种采用 UUID 的方法。不幸的是,当我这样做时: OverviewEvent overviewevent = eventAdapter.getOvervie
我有一个简单的 mongo 迁移框架,它正在执行一些传递给它的脚本。 现在我想将我的 LUUID 迁移到 UUID。我写了以下内容: function fixIds(collectionName) {
我有一个非常奇怪的问题是我得到一个有效的 UUID 不是一个有效的 UUID,例如: 'fd31b6b5-325d-4b65-b496-d7e4d16c8a93' is not a valid UUI
我正在测试 Goa对于一个 API。我想使用 uuid 作为 ID 数据类型。我在 controller.go 中修改了以下函数: // Show runs the show action. func
我有一个包含 uuid 和系统列的表。我需要一个查询来仅返回具有 system=1 的 uuid,而不返回具有 system= 1 和 2 的 uuid 最佳答案 SELECT * FROM
我很想了解在 Avro 中编码一种非常特定类型的数据的最佳实践:UUID。 最佳答案 到目前为止,我发现的唯一方法是定义自定义 UUID: { "namespace" : "your.namesp
我是一名优秀的程序员,十分优秀!