gpt4 book ai didi

java - Jpa Enum 如何映射到其中有空格的列值?

转载 作者:行者123 更新时间:2023-11-29 07:30:58 24 4
gpt4 key购买 nike

我正在关注下面的 JPA 配置中的枚举教程。我的 JPA 连接到 mysql 数据库。但是,枚举列中的某些值在其中包含空格。所以我创建了一个带有 String 字段的 Java 枚举类型来存储这些列值。

问题是,如何使用 JPA @Enumerated(Enum.TYPE = String) 注释映射这个复杂的枚举类型?好像不行。

The Enum example I followed.

我的案例的枚举类型:

public enum Complex {

VALUE1('value one'),
VALUE2('value two'),

private final String name;

private Complex(String name) {
this.name = name;

}


}

最佳答案

对于 Hibernate,您的枚举中没有诸如 name 属性之类的东西,因此它不会那样工作。您将需要自定义序列化器/反序列化器。 Hibernate 如何知道它应该使用 name 而不是像 VALUE1 这样的枚举字符串形式,反之亦然?

@Converter
public class ComplexConverter implements AttributeConverter<Complex, String> {
@Override
public String convertToDatabaseColumn(Complex value){
return value.name; //or whatever
}

@Override
public Complex convertToEntityAttribute(String value) {
///// map string to Complex enum somehow
}

}

在你的实体中

   @Column
@Convert(converter = ComplexConverter.class)
private Complex complex;

未经测试但应该可以工作并向您展示如何执行此操作。

关于java - Jpa Enum 如何映射到其中有空格的列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com