Я хочу преобразовать строку 11.0.3.200
в 0011.0000.0003.0200
для сортировки этой строки по убыванию.
Expression<String> majorVer = cb.function("SUBSTRING_INDEX", String.class, uf.get(sortAttr), cb.literal("."), cb.literal(1)); //11
Expression<String> lpadMajorValue = cb.function("lpad", String.class, majorVer, cb.literal(4), cb.literal("0"));
Expression<String> minorVerBase = cb.function("REPLACE", String.class, uf.get(sortAttr), cb.concat(majorVer, cb.literal(".")), cb.literal(""));//0.3.200
Expression<String> minorVer = cb.function("SUBSTRING_INDEX", String.class, minorVerBase, cb.literal("."), cb.literal(1)); //0
Expression<String> lpadMinorValue = cb.function("lpad", String.class, minorVer, cb.literal(4), cb.literal("0"));
Expression<String> buildVerBase = cb.function("REPLACE", String.class, minorVerBase, cb.concat(minorVer, cb.literal(".")), cb.literal("")); //3.200
Expression<String> buildVer = cb.function("SUBSTRING_INDEX", String.class, buildVerBase, cb.literal("."), cb.literal(1)); //3
Expression<String> lpadBuildValue = cb.function("lpad", String.class, buildVer, cb.literal(4), cb.literal("0"));
Expression<String> revVer = cb.function("REPLACE", String.class, buildVerBase, cb.concat(buildVer, cb.literal(".")), cb.literal("")); //200
Expression<String> lpadRevisionValue = cb.function("lpad", String.class, revVer, cb.literal(4), cb.literal("0"));
Expression<String> lpadValue = cb.concat(lpadMajorValue, cb.concat(lpadMinorValue, cb.concat(lpadBuildValue, lpadRevisionValue)));
orderList.add(cb.desc(lpadValue));
Но я получаю исключение:
nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a];
nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
org.postgresql.util.PSQLException: ERROR: function substring_index(text) does not exist"
Любое предложение, если я делаю что-то не так с SUBSTRING_INDEX
, используйте для построения критериев. Если SUBSTRING_INDEX
не поддерживается разработчиком критериев, что является альтернативой?