2016-09-24 48 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; 
    } 
}