Я хочу выполнить поиск в моей базе данных по критерию. Пример в нескольких полях, объединенных по ИЛИ. То есть я хочу получить записи, в которых «поле1» является примером моего объекта поиска ИЛИ «поле2» является примером моего объекта поиска, где поле1 и поле2 являются дочерними элементами объекта верхнего уровня, и каждый из них имеет один и тот же тип. как мой объект поиска.
Что я хотел бы сделать, это
Disjunction or = Restrictions.disjunction();
or.add(criteria.createCriteria("field1").add(searchObj));
or.add(criteria.createCriteria("field2").add(searchObj));
criteria.add(or);
Что не работает, потому что дизъюнкции работают только с критериямиon, а не с критериямиa.
Я старался
Disjunction or = Restrictions.disjunction();
or.add(Restrictions.eq("field1", searchObj));
or.add(Restrictions.eq("field2", searchObj));
criteria.add(or);
Но это дало мне исключение PropertyAccessException для первичного ключа объекта, говоря:
IllegalArgumentException occurred calling getter of [.....].pk
Есть ли способ сделать QBE с дизъюнкцией между пунктами примера?