@Transient entity кастомного датастора в embedded entity

Столкнулся вот с такой проблемой (CUBA v.7.2.4):
Есть entity A хранимая в кастомном датасторе (CustomDataSource).
Есть embeddable entity E, которая включает в себя entity A, анотированную как @Transient (пусть будет поле E.a).
Есть обычная persistent entity B, в которую включена embeddable entity E (пусть будет поле B.e).
При попытке commit entity B, у которой ненулевой B.e.a, RdbmsStore->EntityFetcher пытается создать транзакцию на fetch поля B.e.a (несмотря на то что поле @Transient) и не может найти бин (transactionManager_CustomDataSource).
Если создать такой бин, то на следующем шаге получаем ошибку, “Cannot handle entity from CustomDataStore datastore because active transaction is for MAIN”).
В коде EntityFetcher нет проверок на @Transient поле.

Update: проблема возникает в StandardEditor’e. При сохранении в CommitContext’e два объекта основного B и embedded E. Если делать коммит просто измененного объекта B, то все работает корректно.

Здравствуйте, не могли бы вы привести исходный код для embedded сущности?

Код ниже. Organization entity хранится в кастомном датасторе.

@NamePattern("[%s] %s|gdprKey,object")
@MetaClass(name = "crm_EmbeddedOrganization")
@Embeddable
public class EmbeddedOrganization extends EmbeddableEntity {
    private static final long serialVersionUID = -2662889952422489146L;

    private static final Logger logger = LoggerFactory.getLogger(EmbeddedOrganization.class);

    @Column(name = "GDPR_KEY", length = 32)
    protected String gdprKey;

    @Transient
    @MetaProperty
    protected Organization object;

    @Transient
    @MetaProperty
    protected String visibleName;

    public String getVisibleName() {
        if(StringUtils.isNotBlank(visibleName))
            return visibleName;
        getObject();
        if(this.object != null && StringUtils.isNotBlank(this.object.getName())) {
            this.visibleName = this.object.getName();
            if(StringUtils.isBlank(this.visibleName))
                this.visibleName = this.gdprKey;
        }
        else {
            this.visibleName = this.gdprKey;
        }
        return visibleName;
    }

    public Organization getObject() {
        if(object == null && StringUtils.isNotBlank(gdprKey)) {
            try {
                object = AppBeans.get(CrmService.class).getOrganization(gdprKey);
            }
            catch (GdprUnavaliableException e) {
                return null;
            }
        }
        return object;
    }

    public void setObject(Organization value) {
        this.object = value;
        if(value != null) {
            this.gdprKey = value.getKey();
        }
        else {
            this.gdprKey = null;
        }
    }

    public String getGdprKey() {
        return gdprKey;
    }

    public void setGdprKey(String gdprKey) {
        if(!StringUtils.equals(this.gdprKey, gdprKey))
            this.object = null;
        this.gdprKey = gdprKey;
    }
}

Проблему со StandardEditor удалось обойти за счет вот такого кода. Но на мой взгляд это явный костыль.

    @Subscribe
    public void onBeforeCommitChanges(BeforeCommitChangesEvent event) {
        dataManager.commit(this.getEditedEntity());
        getScreenData().getDataContext().evictModified();
        setModifiedAfterOpen(false);
        event.preventCommit(OperationResult.success());
    }

Спасибо за сообщение о проблеме, завели тикет: https://github.com/cuba-platform/cuba/issues/2892