Базовый класс для прикладных сущностей

В CUBA имеется базовый класс для прикладных сущностей (не помню как называется). Когда перешли на JMIX, то увидели что такового более нет. Одновременно с этим возникла потребность иметь свой собственный базовый класс. Разработали, попробовали работает. Однако есть ложка дёгтя: после переключения с закладки “Text” в закладку “Designer” JPA Entity в разделе Data Model строчка extends магически исчезает. Как побороть?

А какая у вас версия JMIX-Studio?

1.2.3-213
[а это текст потому что сообщение не может быть короче 20 символов]

У меня такая же версия, но с ходу не воспроизводится.

  1. Создал класс сущности NewEntity в конструкторе
  2. В конструкторе создал новый класс NewEntity_1, указав в Parent мой “базовый” - NewEntity
  3. Приключаюсь между режимом Text / Designer и extends в коде не теряется.

Может какой-то другой сценарий для воспроизведения?

image
image

У нас вот так:
public abstract class QAGEntity {
}

Абстрактный класс… в дереве DataModel его не видно…

У всех наследников есть свои собственные таблицы, у родительского класса нет, только функциональность, общая для всех наследников…

А зачем вам тут abstract?
Это же сущности JPA - если хотите создать некую базовую сущность, которая сама по себе не сопоставляется с таблицей - это суперкласс. Для него используется аннотация @MappedSuperclass.

И аннотацию @JmixEntity вы точно не потеряли?

Если создаете в конструкторе Jmix-Studio - для суперкласса есть одноименный тип сущности.
image

А в коде будет выглядеть так:

@JmixEntity(name = "realcrm_MySuperClass")
@MappedSuperclass
public class MySuperClass {
    @JmixGeneratedValue
    @Column(name = "ID", nullable = false)
    @Id
    private UUID id;

    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }
}
1 симпатия

Да, Ok… спасибо. Так не пропадает. :ok_hand: