Добрый день. В проекте есть сущность Updates и UpdateTable, которая относится к Updates @ManyToOne.
На browse экране Updates выбираем запись и переходим к browse экрану UpdateTables, с передачей параметра updatesId (практически так же как описано здесь: https://doc.cuba-platform.com/manual-latest/gui_data_comp_param.html)
В дескрипторе экрана UpdateTables:
…
<data readOnly="true">
<collection id="updateTablesDc"
class="com.tatikoma.fiasservice.entity.UpdateTable">
<view extends="_local">
<property name="update" view="_minimal"/>
</view>
<loader id="updateTablesDl">
<query>
<![CDATA[select e from fiasservice_UpdateTable e where e.update.id = :updatesId]]>
</query>
</loader>
</collection>
</data>
…
При переходе на этот экран получаем ошибку:
com.haulmont.cuba.core.global.RemoteException:
com.haulmont.cuba.core.sys.jpql.JpqlSyntaxException: Errors found for input jpql:[select e from fiasservice_UpdateTable e where e.update.id = :updatesId]
CommonErrorNode [<unexpected: [@13,47:47=’.’,<68>,1:47], resync=e.update.id = :updatesId>]
at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:96)
at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Предположили, что почему-то не подгружается связанная сущность Updates (не смотря на то что она Mandatory). Переписали запрос:
select e from fiasservice_UpdateTable e, fiasservice_Updates u where e IN(u.updateTables) and u.id = :updatesId
Заработало корректно.
Вопрос 1: Почему, казалось бы логичный запрос не отработал?
Вопрос 2: Заметил, что если поменять FetchType.LAZY на EAGER, при запуске в консоли отписывается:
EAGER fetch type detected for reference field update of entity UpdateTable; Set to LAZY.
Почему?