spring - 如何在 postgres 中添加枚举字段?
问题描述
在我的模型中有一个枚举字段,试图将一个枚举字段添加到数据库中,但不起作用,您能评论一下吗?
public class ChatMessage {
private MessageType messageType;
private String content;
private String sender;
public enum MessageType {
CHAT,
JOIN,
LEAVE
}
我的postgre代码
CREATE TYPE messageType AS ENUM ('CHAT', 'JOIN', 'LEAVE');
CREATE TABLE "chatMessage" (
id SERIAL UNIQUE PRIMARY KEY,
messageType messageType,
content VARCHAR(255) NOT NULL,
sender VARCHAR(255) NOT NULL
);
我想我在 postgres 中错误地声明了变量 enum
解决方案
使用 Enumerated Annotation,Spring 将为您处理这个问题。但一般来说,枚举在 Postgres 中将是 VARCHAR(X) (见第二个链接)
public class ChatMessage {
@Enumerated(EnumType.STRING)
private MessageType messageType;
private String content;
private String sender;
}
http://tomee.apache.org/examples-trunk/jpa-enumerated/
https://vladmihalcea.com/the-best-way-to-map-an-enum-type-with-jpa-and-hibernate/