как должны быть определены отношения модели ext js - PullRequest
0 голосов
/ 08 февраля 2020

Кажется, я не могу понять, как ассоциации должны быть определены в ext js. мне нужно сделать что-то, что очень похоже на: https://examples.sencha.com/extjs/6.7.0/examples/kitchensink/?classic#binding -child-session

1) по какой-то причине ext js создает отношения между Компанией и Заказом, помещая иностранный введите модель заказа (насколько я могу судить, на нее никогда не ссылаются напрямую). в модели Company не упоминается о Заказе.

2) Компания не имеет явно определенного поля id (на которое, я полагаю, companyId должна ссылаться). это означает, что указанный идентификатор является автоматически сгенерированным полем. это также означает, что этот идентификатор не существует на сервере. что означает, что поле companyId на самом деле не сохраняется. по моему опыту при загрузке вложенных данных разрывается привязка, если только ребенок не содержит fk для родителя (по какой-то причине). поэтому мой вопрос: как это может работать?

, если бы эти модели были заполнены из java сущностей, я думаю, что они, вероятно, выглядели бы примерно так:

public class Company {
   private String name;
   private String phone;
   private double price;
   private double priceChangePct;
   private Date priceChangePct;
   private String industry;
   private List<Order> orders;
   ...
}
public class Order{
   private String productCode;
   private int quantity;
   private Date date;
   private boolean shipped;
   ...
}

, если это так, почему настолько ли отличается структура?

Я потратил 4 года на работу с ext js, и за это время я увидел по крайней мере 5 различных способов создания ассоциации, и у меня не было коллег, которые это понимают. auto не работает с привязкой. hasMany|hasOne кажется, что для родительской модели требуется fk в родительской модели, которая не кажется необходимой. associations устарело. в классе поля модели есть свойство reference, которое, как мне кажется, не может заставить работать ...

, и синтаксис в этом примере не имеет для меня никакого смысла.

Итог:

Как правильно сделать это ?

public class Company {
   private Long id;
   private String name;
   private List<Order> orders;
   ...
}
public class Order{
   private Long id;
   private String name;
   ...
}

Все, что я хочу, это 2 модели, где модель компании имеет поле или ассоциацию или что-то, что содержит хранилище заказов, совместимое с двухсторонней привязкой.

РЕДАКТИРОВАТЬ

этот вопрос выглядит аналогичным, но на него так и не был дан ответ

Понимание Ext JS ассоциации моделей эта выглядит несколько многообещающе, но по какой-то причине использует совершенно другой синтаксис: Ext JS ассоциации между моделями

...