2016-09-24 3 views
0

Я столкнулся с проблемой при преобразовании java перечисление в преобразование строки. Пожалуйста, если у вас есть идеи.enum to string в JPQL select query

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

Я не могу использовать EnumType.STRING в @Enumerated сейчас, так как система находится под напряжением.

Пожалуйста, ответьте.

+0

Так вы не хотите, чтобы изменить значение на Thats уровня базы данных, почему избежать '' 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; 
    } 
}