Jpql-запрос для извлечения значения массива - PullRequest
0 голосов
/ 31 января 2019

Моя база данных содержит столбец, который является типом varchar.

В этом столбце я сохраняю значение в форме [1,2].Мне нужно получить первое значение «1».Мне нужно написать запрос jpql, используя @query данных весны jpa.

Я решил удалить фигурные скобки значения, используя функцию подстроки, тогда мне нужно преобразовать его в массив.

ТакЯ пробовал вот так для извлечения подстроки.

  SUBSTRING(u.output,1,LENGTH(u.output-2)) 

Правильно ли этот синтаксис для извлечения подстроки?как преобразовать его в массив.

1 Ответ

0 голосов
/ 31 января 2019

Если вы не можете нормализовать базу данных, я бы нормализовал модель домена с помощью конвертера JPA.

Вы можете просто загрузить объект и перемещаться по массиву как обычно.

https://www.baeldung.com/jpa-attribute-converters

@Entity
public MyEntity{
    @Convert(converter = MyArrayConverter.class)
    int [] values;
}

Создание конвертера JPA:

@Converter
public class MyArrayConverter implements
  AttributeConverter<Integer [], String> {

    @Override
    public String convertToDatabaseColumn(int [] values) {
      //convert int [] to string "[1,2,3]"
    }

    @Override
    public Integer [] convertToEntityAttribute(String dbValue) {
      //convert string "[1,2,3]" to int []
    }
}
...