gpt4 book ai didi

java - 当 Key 是枚举时,HashMap 到 SQL

转载 作者:行者123 更新时间:2023-11-29 13:46:38 26 4
gpt4 key购买 nike

我有以下实体类:

public class SportData {
//other attributes

@Column(name = "POINTS")
@ElementCollection
private Map<NBAEvent, Integer> points;
}


public enum NBAEvent {
THREE_POINT,
TWO_POINT,
FREE_THROW,
//..
}

当我使用 ddl-auto: validate 生成相应的表时,它会创建数据类型为整数的 NBAEvent(这是 k)列(points_key int4 NOT NULL)

  1. 如何为点键列生成一个 varchar 类型的列?
  2. 如果我手动编写像 points_key CHARACTER VARYING(255) 这样的 SQL,会有什么影响?

我正在使用 Spring boot 和 Spring JPA,数据库是 PostgreSQL。

最佳答案

当您的 map 的键是枚举时,您还必须添加 MapKeyEnumerated 注释。

关键是用EnumType.STRING 类型声明它。

@ElementCollection
@CollectionTable(name = "colltable")
@MapKeyEnumerated(EnumType.STRING)
@Column(name="POINTS")
private Map<NBAEvent, Integer> map;

否则,根据 javadocs,它默认为:javax.persistence.EnumType.ORDINAL。这会在创建 ddl 时生成一个整数表。

您可能还需要如上所述的 @CollectionTable 注释。

关于java - 当 Key 是枚举时,HashMap 到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47266050/

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