В CUBA имеется базовый класс для прикладных сущностей (не помню как называется). Когда перешли на JMIX, то увидели что такового более нет. Одновременно с этим возникла потребность иметь свой собственный базовый класс. Разработали, попробовали работает. Однако есть ложка дёгтя: после переключения с закладки “Text” в закладку “Designer” JPA Entity в разделе Data Model строчка extends магически исчезает. Как побороть?
А какая у вас версия JMIX-Studio?
1.2.3-213
[а это текст потому что сообщение не может быть короче 20 символов]
У меня такая же версия, но с ходу не воспроизводится.
- Создал класс сущности NewEntity в конструкторе
- В конструкторе создал новый класс NewEntity_1, указав в Parent мой “базовый” - NewEntity
- Приключаюсь между режимом Text / Designer и extends в коде не теряется.
Может какой-то другой сценарий для воспроизведения?
У нас вот так:
public abstract class QAGEntity {
}
Абстрактный класс… в дереве DataModel его не видно…
У всех наследников есть свои собственные таблицы, у родительского класса нет, только функциональность, общая для всех наследников…
А зачем вам тут abstract
?
Это же сущности JPA - если хотите создать некую базовую сущность, которая сама по себе не сопоставляется с таблицей - это суперкласс. Для него используется аннотация @MappedSuperclass
.
И аннотацию @JmixEntity
вы точно не потеряли?
Если создаете в конструкторе Jmix-Studio - для суперкласса есть одноименный тип сущности.
А в коде будет выглядеть так:
@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;
}
}
Да, Ok… спасибо. Так не пропадает.