2017-11-13 6 views
1

であるI持って以下のエンティティ・クラス:HashMapのキーが列挙

public class SportData { 
//other attributes 

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


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

私はそれのようなデータ型の列(K)でNBAEventを作成ddl-auto: validateを使用して対応するテーブルを生成すると整数(points_key int4 NOT NULL)

  1. ポイントキー列のためのvarchar型の列はどのように生成できますか?
  2. 私が手動でpoints_key CHARACTER VARYING(255)のようなSQLを書くと、どのように影響を受けますか?

私はSpring JPAと一緒にSpringブートを使用していますが、DBはPostgreSQLです。

答えて

0

マップのキーが列挙型の場合、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アノテーションが必要な場合もあります。

関連する問題