Доброго времени суток!
Я использую 7.1.8 версию CUBA platform и столкнулся с одним багом.
У меня есть browse-форма для сущности (назовём её A). У данной сущности есть ссылка на другую сущность (назовём её B), которая наследуется от класса, включающего в себя Transient поле с Related полями (назовём его C) и имеет аннотацию NamePattern на это поле. .
В данной ситуации возникает ошибка - не работает стандартная сортировка по полю B в стандартной browse-форме сущности A.
Примитивные примеры сущностей:
//...
public class A {
//...
private B b;
//...
}
@NamePattern("%s|langValue") //langValue из сущности C
public class B extends C {
//...
}
public class C {
//...
private String langValue1;
private String langValue2;
private String langValue3;
//Поле, выбирающее langValue1, langValue2 или langValue3 в зависимости от локализации
@Transient
@MetaProperty(related = {"langValue1", "langValue2", "langValue3"})
private String langValue;
public String getLangValue() {
UserSessionSource userSessionSource = AppBeans.get("cuba_UserSessionSource");
String language = userSessionSource.getLocale().getLanguage();
String availableLocales = AppContext.getProperty("cuba.availableLocales");
if (StringUtils.isNotEmpty(availableLocales)) {
String[] locales = availableLocales.split(";");
for (int i = 0; i < locales.length; i++) {
if (locales[i].contains(language)) {
langValue = getValue(String.format("langValue%d", ++i));
break;
}
}
}
return StringUtils.defaultIfBlank(langValue, langValue1);
}
//...
}
При использовании langValue1 или других полей в качестве NamePattern, ошибка пропадает и сортировка продолжает работать. Примечательно то, что эта ошибка возникает только время от времени на некоторых ссылках типа ссылки на B в сущности A и может пропадать/появляться снова.
Прошу помочь мне с этой проблемой и заранее благодарю.