Добрый день.
Использую ext.cubaVersion = ‘7.2.13’
Описываю сущность
@Table(name = "CRR_DICT_BRANCH") @Entity(name = "crr_DictBranch") @NamePattern("%s|description") public class DictBranch extends BaseStringIdEntity implements HasUuid, Creatable, Updatable, SoftDelete { @Id @Column(name = "CODE", nullable = false, length = 20) private String code; @NotNull @Column(name = "DESCRIPTION", nullable = false, length = 300) private String description;
и так далее, это справочник. На форме просмотра основной сущности он используется в фильтрах. Настраиваю фильтр и сохраняю его со значениями. Когда в дальнейшем переключаюсь на него получаю ошибку
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Description: Problem compiling [select e from crr_DictBranch e where e.id in :ids]. [44, 48] The state field path ‘e.id’ cannot be resolved to a valid type. — org.eclipse.persistence.exceptions.JPQLException: Exception Description: Problem compiling [select e from crr_DictBranche e where e.id in :ids]. [44, 48] The state field path ‘e.id’ cannot be resolved to a valid type.
Поиск проблемы привел к Param::loadEntityList в нем вижу жестко закодированое название свойства e.id
ctx.setQueryString(String.format(“select e from %s e where e.id in :ids”, metaClass.getName()))
.setParameter(“ids”, Arrays.asList(ids));
Наверное, надо переделать получение его на что то подобное этому:
metaClass.getProperties().stream().filter(p -> p.getAnnotatedElement().isAnnotationPresent(Id.class)).findFirst().get().getName();