В общем продолжу тут, а там если что вынесите в отдельный топик.
Возможно все так и должно работать и просто не совпадает с моими ожиданиями.
Атрибуты embeddable-сущности добавляю в контроллер edit-экрана следующим образом:
<field property="geologyFluid.bottomPressure"/>
При этом:
- При изменении этих полей в форме не производится коммит. Вероятнее всего
isModifided()
у датасорса так и остается false. Если изменить атрибут самой сущности, то изменения (в том числе и в embeddable-сущности) сохранятся.
Если есть какой-то обходной путь, поделитесь.
-
ItemPropertyChangeListener
для embedded-атрибута не срабатывает при изменении атрибута embeddable-сущности.
- Есть следующий слушатель:
@Inject
private LookupPickerField wellLPF;
@Override
protected void initNewItem(RequestEditWell item) {
super.initNewItem(item);
wellLPF.addValueChangeListener(e -> onChangeWell(wellLPF.getValue()));
}
private void onChangeWell(Well well) {
Set<String> attrNamesToCopy = new HashSet<>(Arrays.asList("wellID", ..., "geologyFluid"));
attrNamesToCopy.forEach(attrName ->
getItem().setValue(attrName, well.getValue(attrName))
);
}
geologyFluid
- соответственно embedded-атрибут. Так вот, при выборе значения с помощью picker-а все хорошо: на форме проставлются значения в атрибуты embeddable-сущности. При использовании же lookup-а значения на форме не проставляются, хотя и заполняются в датасорсе. При этом если переключиться на другую вкладку и вернуться назад, значения полей заполнятся.
В качестве обходного решения не подскажите как обновить экран принудительно? Что-то вроде repaint() для таблицы.
-
Студия не позволяет выбрать представление для emdedded-атрибута:
Может и не должна…
По умолчанию там _minimal
, что как бы намекает, что они не будут подгружены. Кроме того галочками можно выбрать отдельные атрибуты.
-
Предлагаю изменить поведение студии. Генерировать секцию @AttributeOverrides
только при первом добавлении атрибута. Сейчас если я не хочу переопределять имена колонок и удаляю эту секцию, студия вновь сгенерирует ее при любом изменении сущности.
-
Вопрос не связан с предыдущими, но связан с генерацией скриптов студией. Если изменить в metadata.xml
<datatypes>
<datatype id="Length" class="com.borets.wedb.datatypes.Length" sqlType="decimal(19,6)"/>
</datatypes>
sqlType
для кастомного типа данных, студия не будет учитывать этого при генерации скриптов обновления для уже добавленных атрибутов, только для вновь добавленных.
PS. Уже подумываю снова утащить из ebeddable сущности в основные… Может быть сможете предложить решения или обходные решения этих проблем.