【发布时间】:2020-05-09 02:35:08
【问题描述】:
我有一个应用程序,其中包含一些使用 LocalDate / LocalDateTime 字段的 JPA 类,并且这些字段作为 Bytea 映射到 PostgreSQL 列中。
这种方法最大的问题是我不能用SQL做查询,比如我不能查询这个:SELECT * FROM star_date BETWEEN '2020-01-01' AND '2020-01-02' ,因为 DateTime 和 date 列使用了 Bytea 类型。
下面有一个显示我当前问题场景的类示例!这个类使用 JPA 在 PostgreSQL 中生成表,所以它是自动发生的。看看创建的恶魔进入类和表的设计。
@Data
@Entity
@Table(name = "processes")
public class Process implements Serializable {
@Id
@GeneratedValue(generator = "ProcessSequenceGenerator")
private Long id;
private Long legacyId;
private String createdBy;
private LocalDateTime created;
}
有人遇到过这样的问题吗?
【问题讨论】:
-
您的列的数据类型是什么,究竟?你是说这些列的类型是
BYTEA? -
提供一个MCVE,用你的JPA创建表,插入行。
-
@BasilBourque 我有一个类正在使用这样的字段: private LocalDateTime created;我使用 JPA,然后当 JPA 创建作为 postgresql 的数据库时,该字段的列被键入为 Bytea。你明白了吗?
-
混淆层的乐趣。只需手动创建表,然后您就可以确定它们是使用正确的类型创建的。例如
timestamp可以很容易地读成LocalDateTime -
您需要 JPA 2.2 或更高版本才能支持 java.time 类型。见Jakarta Persistence。 Search to learn more.
标签: java postgresql localdate bytea