【问题标题】:Mapped column value to enum first argument将列值映射到枚举第一个参数
【发布时间】:2018-02-19 12:19:43
【问题描述】:

我在 DB String 列中有值

0101
0111 
1110

我想在我的实体中创建枚举并增加价值。

public enum MyEnum{
  NEW("0101","created new"), 
  SUCCESS("0111", "created success), 
  ERROR("1110", "created with error");
}

我想通过 MyEnum 的第一个参数从 DB 映射值并在我的代码中获取第二个参数。像这样的:

hz.getMyEnum().value() // I need return created new or created success

【问题讨论】:

  • 尝试使用@AttributeConverter

标签: java jpa enums entity


【解决方案1】:

我知道这个问题是关于 JPA 的——另一个答案正确地指出,JPA 2.1 不支持这种映射......但 jOOQ 通过org.jooq.impl.EnumConverter 支持它没有问题,请参阅https://www.jooq.org/doc/3.10/manual/sql-execution/fetching/data-type-conversion/

【讨论】:

    【解决方案2】:

    不幸的是,jpa 目前(直到 2.1)不支持映射到枚举范围的变量

    你可以:

    1- 将值存储为NEW,SUCCESS,ERROR 而不是0101,0111,1110

    2- 保持原样

    3-(受 Kovacs 回答的启发)您可以创建一个 @Converter <Enum,String> 并插入与枚举对应的字符串变量名,反之亦然...唯一要考虑的是该转换器将与您的枚举紧密耦合

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 2017-07-24
      • 2016-03-16
      • 2019-04-09
      • 2019-08-14
      • 1970-01-01
      相关资源
      最近更新 更多