java - 如何将枚举类型存储为小写字符串?

标签 java hibernate jpa enums persistence

我的模型类(件):

public class User ... {

    @Enumerated(STRING)
    private Status status;

    ...

    public enum Status {

        ACTIVE,
        INACTIVE;

        @Override
        public String toString() {
            return this.name().toLowerCase();
        }
    }

    ...

    public String getStatus() {
        return status.name().toLowerCase();
    }

    public void setStatus(Status status) {
        this.status = status;
    }
}

正如您在上面看到的,我重写了 toString 方法,但没有效果。 数据库中的枚举存储为 ACTIVEINACTIVE

附言我用的是hibernate jpa

感谢您的帮助!

附言我问是因为我编写了生成 json 的 REST 服务(如果我没记错的话,在 json 对象中最好使用小写)

最佳答案

写一个converter类,用 @Converter 注释, 它实现了 javax.persistence.AttributeConverter<YourEnum, String> .有两种方法:

public String convertToDatabaseColumn(YourEnum attribute){..}
public YourEnum convertToEntityAttribute(String dbData) {..}

在那里你可以应用你的大写/小写逻辑。

稍后您可以注释您的字段,以便使用给定的转换器。

关于java - 如何将枚举类型存储为小写字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19547218/

相关文章:

java - 如何列出kafka集群的所有生产者?

java - Hibernate 单向与 MySQL DB 的一对一映射?

c# - NHibernate - 没有显式更新的意外更新

hibernate - 交易所需异常 : no transaction is in progress while using JPAItemWriter

spring - 将 Spring Data JPA 与 QueryDsl 结合使用,分页查询会破坏排序

java - 访问 Gradle dist 目录中的文件

java - 'File#renameTo()' 在 Java 中不起作用

java - Java中没有输出

java - jpa实体管理器回滚不起作用

java - Spring JPA : Prevent deleting if relations still exist