2016-09-24 35 views
0

我面臨將java枚舉轉換爲字符串轉換的問題。請如果你有任何想法。枚舉到JPQL選擇查詢中的字符串

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(); 
     } 
    } 
} 

我不能@Enumerated使用EnumType.STRING,因爲現在的系統是活的。

請回復。

+0

所以你不希望在數據庫級這就是爲什麼避免''EnumType.STRING''改變價值? –

+0

@rev_dihazum:是的,因爲它需要數據遷移,我想避免它。謝謝 – sarwar026

+0

你的''String toString()''方法也無法達到目的?我想它應該工作。 –

回答

0

一種選項可爲波紋管使用枚舉的構造函數:

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; 
    } 
}