Если вам это нужно для PostgreSQL (одной из немногих баз данных, которые поддерживают массивы SQL), вы можете попробовать и использовать пользовательские конвертеры.Как показано в этом примере, https://thoughts -on-java.org / jpa-21-how-to-Implement-type-converter /
Алгоритм преобразования в строковый форматследующее:
public String convertToDatabaseColumn(double[][] arr) {
if (arr == null) {
return null;
}
// verify array
int len1 = arr.length;
int len2 = -1;
for (double[] ar : arr) {
Objects.requireNonNull(ar);
if (len2 == -1) {
// first iteration only, if non-empty
len2 = ar.length;
}
else {
if (len2 != ar.length) {
throw new RuntimeException("PostgreSQL multidimensional arrays require same lengths on every level");
}
}
}
StringBuilder sb = new StringBuilder();
sb.append('{');
for (double[] ar : arr) {
sb.append('{');
for (double a : ar) {
sb.append(a).append(',');
}
sb.setLength(sb.length()-1);
sb.append("},");
}
sb.setLength(sb.length()-1);
sb.append('}');
return sb.toString();
}
Вы должны быть в состоянии сделать алгоритм их чтения, когда вы знаете эту часть.Только не полагайтесь на split
или регулярные выражения, и вы, вероятно, можете пропустить проверку.
Это не распространяется на массивы строк, которые требуют специального экранирования, а в некоторых случаях заключаются в двойные кавычки.Этот алгоритм нигде не описан должным образом, и вам придется найти его в исходном коде сервера.Вы можете найти мою попытку реализовать это здесь в моем модуле, который позволяет вам использовать одномерные массивы многих непримитивных типов.
Если вам это нужно для другого типа базы данных, котораяне поддерживает массивы, вы можете просто сохранить его как текст, используя пользовательский формат, или даже просто преобразовать JSON с помощью преобразователей атрибутов.