jpql查询以提取数组值

时间:2019-01-31 11:08:32

标签: sql spring-data-jpa jpql

我的数据库包含一列属于varchar的类型。

在那一列中,我以[1,2]的形式存储值。 我需要获取第一个值“ 1”。 我需要使用spring数据jpa的@query编写jpql查询。

我决定使用子字符串函数删除值的花括号,然后将其转换为数组。

所以,我尝试过这样子字符串提取。

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

这是语法正确的子字符串的提取?如何将其转换为数组。

1 个答案:

答案 0 :(得分:0)

如果您无法规范化数据库,那么我将通过JPA Converter规范化域模型。

您可以只加载实体并照常浏览数组。

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 []
    }
}