NullPointerException при сортировке по колонке Table и GroupTable, если в Instance name участвует неперсистентный атрибут

Platform-6.8.5 , Studio 6.8.2
В приложении тестовый проект на котором легко воспроизвести ошибку как на экране приложения (NewEntity2.browse), так и в Инспекторе сущностей.

Есть сущность NewEntity1 с двумя атрибутами, один один локальный, второй - неперситентный.
Instance name задействованы оба атрибута.

@NamePattern("%s %s|transientField,localField")
@Table(name = "SOTRERROR_NEW_ENTITY1")
@Entity(name = "sotrerror$NewEntity1")
public class NewEntity1 extends StandardEntity {
    private static final long serialVersionUID = -1934877673313271356L;

    @Column(name = "LOCAL_FIELD")
    protected String localField;

    @Transient
    @MetaProperty
    protected String transientField;
    .....
} 

Есть сущность NewEntity2 с одним локальным атрибутом и атирибутом (ассоциация, MANY_TO_ONE) на NewEntity1.

@NamePattern("%s|name")
@Table(name = "SOTRERROR_NEW_ENTITY2")
@Entity(name = "sotrerror$NewEntity2")
public class NewEntity2 extends StandardEntity {
    private static final long serialVersionUID = 2051584070870050845L;

    @Column(name = "NAME")
    protected String name;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "LINK_ID")
    protected NewEntity1 link;
   ...
}

Сущности и экраны сформированы стандартными средствами Studio 6.8.2.

Если на простом табличном экране просмотра NewEntity2 кликнуть сортировку по колонке с атрибутом “link” и обновить экран, то получим очень неинформативную ошибку
image

Аналогично в Инспекторе сущностей для NewEntity2 - значение колонки корректно отображается, но получаем NullPointerException.
Результат не зависит от того, пуст или заполнен неперсистентный атрибут.

А если в NewEntity1 в Instance name следование атрибутов поменять местами, то при попытке просмотра перечня NewEntity2 табличном экране NewEntity2.browse получим internal error
image

Хотелось бы как минимум, при попытке задействовать в Instance name неперсистентного атрибута, получать предупреждение в Studio о возможных проблемах на экранах.
Ну и более информативное сообщение об ошибке тоже сэкономило бы много времени.

SotrError.zip (33,9 КБ)

1 симпатия

Добрый день!
Пожалуйста, обновите версию платформы до 6.8.6.

Цитата
…обновите версию платформы до 6.8.6.

Добрый день!

На 6.8.6 картина не изменилась…
Тестовый проект после обновления в приложении.
Симптомы те же.
SotrError.zip (34,1 КБ)

Так как вы отсортировали в табличке колонку, которая связана с сущностью, которая использует непирсистентное поле в своем InctanseName, у вас вознимкает ошибка, связанная с тем, что orderBy нельзя применять к неперсистентным полям. Чтобы решить проблему сделайте следующее:

  • Вам необходимо удалить все экземпляры сущности UserSetting. которые относятся к экрану вашей NewEntity2, сделать это можно в Entity Inspector, выбрав сущность UserSetting.
  • Для колонки Link табицы newEntity2sTable установите атрибут sortable="false".

Я понимаю, как это исправить…
Собственно, вопрос (пожелание) было в первом посте:

Для вашей проблемы был создан issue в youtrack.

1 симпатия