Я объясню вам, в каком случае это проходит. Вот моя модель:
MainObject----ItemObject------------Property1Object
| |---Property2Object
| |---Property3Object
----- |---Property4Object
| | |
Assoc
| | |
PaObject
Я напоминаю вам, что цель состоит в том, чтобы выполнить следующий запрос без проблем
select item from ItemObject item where (item.ins between :dateBegin and :dateEnd) or (item.mod between :dateBegin and :dateEnd)
Если, прежде чем выполнить предыдущий запрос, я прохожу 2 следующих шага , isuue нет, и я не знаю, почему
ШАГ 1: сделать запрос на MainObject, чтобы получить все эти объекты, которые были изменены или вставлены. Этот шаг не является обязательным, но это этап подготовки к STEP2. STEP2 - это код, который делает запрос без проблем
STEP2: из STEP1 я получаю List<MainObject>
mainObjectsList. Поэтому я применяю следующий код:
List<CustomObject> customObjects = new ArrayList<CustomObject>();
for (MainObject mainObject : mainObjectsList) {
customObjects.addAll(constructCustomObjectFromMainObject(mainObject));
}
С CustomObject, который представляет собой следующий
public class CustomObject {
private static final long serialVersionUID = 4L;
private String itemProperty1;
private String itemProperty2;
private String itemProperty3;
private String itemProperty4;
List<PaObject> paObjectData;
private Property1Object property1Object;
private Property2Object property2Object;
private Property3Object property3Object;
private Property4Object property4Object;
}
и метод constructCustomObjectFromMainObject
private List<CustomObject> constructCustomObjectFromMainObject(MainObject mainObject) {
List<CustomObject> customObjectList = new ArrayList<CustomObject>();
for (ItemObject item : mainObject.getItems()) {
customObjectList.add(constructCustomObject(item, true, true, true, true));
}
return customObjectList;
}
private CustomObject constructCustomObject(ItemObject item, boolean property1Flag, boolean property2Flag, boolean property3Flag, boolean property4Flag) {
CustomObject customObject = new CustomObject();
customObject.setItemProperty1(item.getProperty1());
customObject.setItemProperty2(item.getProperty2());
customObject.setItemProperty3(item.getProperty3());
customObject.setItemProperty4(item.getProperty4());
Set<Assoc> assocSet = item.getAssoc();
List<PaObject> paObjectList = new ArrayList<PaObject>();
for (Assoc assoc : assocSet) {
paObjectList.add(assoc.getPaObject());
}
customObject.setpaObjectList(paObjectList);
if (property1Flag) {
customObject.setProperty1Object(item.getProperty1Object());
}
if (property2Flag) {
customObject.setProperty2Object(item.getProperty2Objects());
}
if (property3Flag) {
customObject.setProperty3Object(item.getProperty3Object());
}
if (property4Flag) {
customObject.setProperty4Object(new DataConverter().toProperty4Object(item));
}
return customObject;
}
Я суммирую: когда STEP2 выполняется, мой запрос цели проходит без проблем