Есть ли в jmix api способ определить является ли класс частью композиции, и определить класс к которому она(композиция) относится?
например:
связь Order - OrderLine.
метод Class isCompositionAndGet(Class class)
при вызове isCompositionAndGet(OrderLine) вернет класс Order.
Прямо подобных методов вроде нет, но есть бины Metadata
и MetadataTools
. С их помощью можно получить всю информацию о метаданных.
Но, там много всего и придется поразбираться.
Скорее всего, придется просматривать все JpaEntity (metadataTools.getAllJpaEntityMetaClasses()
) на предмет наличия meta-property искомого класса (OrderLine).
А потом уточняться - есть ли у этого meta-property аннотация @Composition
.
Если кто может посоветовать более прямой путь - тоже с удовольствием послушаю.
Спасибо. Я примерно так и предполагал сделать.
Пример определения, является ли атрибут композицией:
@JmixEntity
@Entity
@Table(name = "USER_")
public class User implements JmixUserDetails, HasTimeZone {
// ...
@Composition
@OneToMany(mappedBy = "user")
private List<UserStep> steps;
MetaClass userMetaClass = metadata.getClass(User.class);
MetaProperty stepsMetaProp = userMetaClass.getProperty("steps");
MetaProperty.Type type = stepsMetaProp.getType();
assert type == MetaProperty.Type.COMPOSITION;
1 симпатия