Проблема с колонкой с аннотацией @Id

Добрый день.
Использую 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();

Добрый день.

По вашей проблеме создан тикет https://github.com/cuba-platform/cuba/issues/3178

Проблема подтверждена и будет исправлена

1 симпатия