我的数据库包含一列属于varchar的类型。
在那一列中,我以[1,2]的形式存储值。 我需要获取第一个值“ 1”。 我需要使用spring数据jpa的@query编写jpql查询。
我决定使用子字符串函数删除值的花括号,然后将其转换为数组。
所以,我尝试过这样子字符串提取。
SUBSTRING(u.output,1,LENGTH(u.output-2))
这是语法正确的子字符串的提取?如何将其转换为数组。
答案 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 []
}
}