首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jpa Enum如何映射到包含空格的列值?

问Jpa Enum如何映射到包含空格的列值?
EN

Stack Overflow用户
提问于 2018-07-12 03:36:55
回答 2查看 621关注 0票数 1

我在JPA配置中遵循下面的枚举教程。我的JPA已连接到mysql DB。但是,枚举列中的某些值包含空格。所以我创建了一个带有字符串字段的Java枚举类型来存储这些列值。

问题是,如何使用JPA @Enumerated(Enum.TYPE = String)注释映射这种复杂的枚举类型?它似乎不起作用。

The Enum example I followed.

我的案例的枚举类型:

代码语言:javascript
复制
public enum Complex {

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

    private final String name;

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

    }


}
EN

回答 2

Stack Overflow用户

发布于 2018-07-12 03:42:44

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

代码语言:javascript
复制
@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
 }

}

在你的实体中

代码语言:javascript
复制
   @Column
   @Convert(converter = ComplexConverter.class)
   private Complex complex;

没有经过测试,但应该可以工作,并向您展示如何做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2018-07-12 07:05:20

你可以发布这个错误吗?但是使用@Enumerated(Enum.TYPE = String),JPA将持久化VALUE1或VALUE2,并且表中的字段应该支持该数据类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51293060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档