【问题标题】:Enums to String in MYSQL using Spring使用 Spring 在 MYSQL 中枚举到字符串
【发布时间】:2011-08-18 19:39:15
【问题描述】:

我正在使用 Spring(特别是 Roo)来开发应用程序,对于一个实体,我有一个基于一组枚举(即枚举(Blue,Pink,Red))的下拉列表。当存储在 MYSQL 数据库中时,这些枚举存储为数字(显然)。我希望将这些存储为实际的字符串值而不是数据库中的数字(所以在 MYSQL 中我希望“pinK”位于“color”而不是简单的“2”下。这可能吗?谢谢

编辑:

让我试着用不同的方式问它。说当我从 MYSQL 检索数据时。我想要实际单词而不是符号值,有什么方法可以做到这一点?

【问题讨论】:

    标签: mysql spring spring-roo


    【解决方案1】:

    我会尝试使用 @Enumerated(EnumType.STRING) 注释标记您的字段,例如:

    @Enumerated(EnumType.STRING)
    private MyEnumType myEnumField;
    

    【讨论】:

      【解决方案2】:

      您可以将值存储为文本,然后使用插入触发器来验证存储的值是允许值之一(因为 MySQL 不支持检查约束)。

      您还可以索引最少数量的字符以提供唯一性,从而使您的索引开销更小。在您的示例中,您只需要索引第一个字符,因为“B”、“P”和“R”是唯一的。如果将“Brown”添加到列表中,则需要将前两个字符(“Bl”、“Pi”、“Re”、“Br”)编入索引。


      编辑

      我最初的建议是将值存储为实际的文本表示形式,而不是数字。

      不过,另一种方法是添加一个“颜色”表:

      id     INT
      name   VARCHAR
      

      然后让您的“枚举”列成为颜色表的外键。然后,当您进行选择时:

      SELECT ...,colors.name AS color
      FROM table t
      JOIN colors c ON t.color = c.id
      

      【讨论】:

        猜你喜欢
        • 2019-06-04
        • 2018-07-12
        • 2011-11-02
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多