java - 尽管 Postgres 有一个有效的 ID,但 GenerationType.IDENTITY 的 ID 为空
问题描述
我在 SO 上阅读了几篇类似的帖子,但到目前为止没有任何帮助。我正在使用 Java EE 8、Open Liberty 20.0.0.6 和 PostgreSQL 12。
我使用 Docker 在本地运行,它使用以下方式初始化架构:
CREATE TABLE IF NOT EXISTS PUBLIC.tab_todo
(
col_id SERIAL PRIMARY KEY,
col_name VARCHAR(80) NOT NULL,
col_desc VARCHAR(500),
col_due TIMESTAMP NOT NULL,
col_state BOOLEAN NOT NULL
);
我addTodo
保留新元素的方法非常简单:
public Long addTodo(final Todo todo) {
LOG.info("Add todo");
entityManager.persist(todo);
LOG.info("Created todo: {}", todo);
return todo.getId();
}
但 id 始终是null
.
这是我的实体:
@Entity
@Table(name = "tab_todo")
public class Todo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
//@Column(name = "col_id", nullable = false) // This did not have any effect either
private Long id;
@Column(name = "col_name")
private String name;
@Column(name = "col_desc")
private String description;
@Column(name = "col_state")
private boolean status;
@Column(name = "col_due")
private LocalDateTime dueDate;
// Getter, Setter, etc.
保存一个新的工作正常。当我检查数据库时,我可以看到col_id
已正确设置。但是 JPA 在持久化时不会在我的实体中设置 id。
我在这里做错了什么?
解决方案
推荐阅读
- dart - 执行异步处理程序的错误顺序
- reactjs - React Material UI table 设置高度时性能不佳
- angular - 在组件中使用时未定义 API 数据
- sql - 我需要在 SQL Server 2019 上编写查询数据或您的解决方案
- websocket - 如何处理 websocket 断开连接问题,/gofiber/websocket 中的状态码 1006
- java - 不能json字符串数据转换列表
- django - 如何修复 Docker 镜像更新导致的 504 错误
- python - 在预测经济变量时如何适应 SARIMA 中的 covid-19 冲击?
- c++ - C ++将数据从A类的对象传递给派生类B的对象
- javascript - 使用 IE 11 在 Angular Probleme 中删除字符串中的重音符号/变音符号