首页 > 解决方案 > 如何在 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

标签: springpostgresql

解决方案


使用 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/


推荐阅读