Прежде всего, я хотел бы сказать, что с профессиональной точки зрения вы должны держаться подальше от структуры сущности / запроса / Home Seam.
Вы можете прочитать мой комментарий о том, почему вы не должны его использовать здесь
Если вы хотите использовать его, вы должны знать, что это обмен, который вы принимаете. Это замедлит ход событий, но будет проще в использовании.
Тем не менее, позвольте мне попытаться ответить на ваши вопросы с некоторыми примерами:
However, I've also seen some examples using a RESTRICTIONS array. How exactly is this used? Are the OR conditions or AND conditions?
Начиная со шва 2.2.0 (если я не ошибаюсь), у вас есть возможность добавлять ОГРАНИЧЕНИЯ с помощью ИЛИ / И.
Вы можете установить это с помощью оператора restrictionLogicOperator
в вашем представлении следующим образом:
<ui:define name="label">Match</ui:define>
<h:selectOneRadio id="logic" value="#{myEnityQueryList.restrictionLogicOperator}" styleClass="radio">
<f:selectItem itemLabel="AND" itemValue="and"/>
<f:selectItem itemLabel="OR" itemValue="or"/>
</h:selectOneRadio>
Этот код должен быть частью формы, которая сопоставлена с вашим объектом EntityQuery вместе с некоторыми ОГРАНИЧЕНИЯМИ. Ограничения используются для фильтрации запроса, чтобы вы могли получить правильный набор результатов. Например:
private static final String[] RESTRICTIONS = { "lower(person.name) like lower(concat(#{personList.person.name},'%'))"}
Так что, если у вас есть поле имени в вашей форме, вы можете набрать John
, и оно добавит John%
к запросу.
Can anyone give me some more detailed information as to how EntityQuery is intended to be used?
EntityQuery предназначен для использования вместе с какой-либо формой поиска. Вы связываете свою форму с полями, которые хотите найти, и затем она извлекает список на основе результатов, как я описал выше.