Java: как получить перечисляемое значение в строку?

#java #sql #enums

#java #sql #перечисления

Вопрос:

Скажем, у меня есть перечисление, которое просто

 public enum testEnum {
    A, B, C, D
}
 

Из базы данных SQL я получил таблицу с именем DATA, в которой можно найти значения test_a и prg_l. Значения test_a должны соответствовать значениям моего перечисления (A, B, C, D). Но как я могу сохранить свое перечисление в записи, чтобы проверить данные sql?

   public void checkIfRecordIsUsed(String record, testEnum test) {
    List<String> data = new ArrayList<String>();
    Query dataQuery = entityManager.createNativeQuery("select * from DATA where test_a = 'A' and prg_l = ?1");
    dataQuery.setParameter(1, record);
    if (dataQuery.getResultStream().findAny().isPresent())
      tablesWithRecords.add("DATA");
  }
 

Комментарии:

1. Вы имеете в виду test.name() ?

2. test.name() Это сделает ввод в ваш запрос.

3. вы имеете в виду, как показано ниже?

4. или как мне добавить это в мой запрос данных?

5. @Jolosin Смотрите мой ответ.

Ответ №1:

Вы можете ввести значение перечисления в виде строки:

     public void checkIfRecordIsUsed(String record, testEnum test) {
        List<String> data = new ArrayList<String>();
        Query dataQuery = entityManager.createNativeQuery("select * from DATA where test_a = ?2 and prg_l = ?1");
        dataQuery.setParameter(1, record);
        dataQuery.setParameter(2, test.name());
        if (dataQuery.getResultStream().findAny().isPresent())
            tablesWithRecords.add("DATA");
    }