2016-09-24 10 views
0

java列挙型を文字列変換に変換する際に問題に直面しています。あなたは何か考えてください。JPQL selectクエリで文字列に列挙する

String mainQuerySt = "select o.ttType from Tt o"; 

Query mainQuery = em.createQuery(mainQuerySt); 
List result = mainQuery.setFirstResult(offset).setMaxResults(numofRecords).getResultList(); 

ttType enumの文字列表現が必要です。どうやってするの?

マイTt定義:

@Enumerated(EnumType.ORDINAL) 
@Column(name = "tt_type", nullable = false) 
private TTType ttType; 

マイ列挙TTType定義:

public enum TTType 
{ 
    FC, 
    PD 
    ; 

    @Override 
    public String toString() 
    { 
     switch (this) 
     { 
      case FC: 
       return "FC"; 
      case PD: 
       return "PD"; 
      default: 
       throw new AssertionError(); 
     } 
    } 
} 

システムが生きているので、私は今@EnumeratedEnumType.STRINGを使用することはできません。

ご返信ください。

+0

ですから、 '' EnumType.STRING''を回避する理由データベースレベルのthatsで値を変更したくありませんか? –

+0

@rev_dihazum:はい。データ移行が必要となるため、避けたいのです。ありがとう – sarwar026

+0

'' String toString() ''メソッドも目的を果たすことができませんでしたか?私はそれが動作するはずだと思います。 –

答えて

0

1つのオプションは、として怒鳴る列挙型のコンストラクタを使用することがあります

public enum TTType { 
    FC("FC"), 
    PD("PD"); 

    private String value; // the value 

    // Constructor 
    TTType(String value) { 
     this.value = value; 
    } 

    public String getValue() { 
     return this.value; 
    } 

    public String toString() { 
     return this.value; 
    } 
}