Я всегда получаю ту же ошибку при использовании API критериев:
Local Exception Stack:
Exception [EclipseLink-6075] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.QueryException
Exception Description: Object comparisons can only use the equal() or notEqual() operators. Other comparisons must be done through query keys or direct attribute level comparisons.
Expression: [
Relation operator LIKE
Query Key rootId
Base de.uni.entities.Diary
Constant Testaccount]
Query: ReportQuery(referenceClass=Diary )
Код с API критериев выглядит следующим образом:
....
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);
// Restrictions
Predicate[] predicate = new Predicate[1];
// From-clause
Root<User> root2R = cq.from(User.class);
predicate[0] = cb.like(root2R.<String> get("rootId"), id);
Join<Clazz, Diary> friends2R;
friends2R = root2R.join("diaries");
cq.where(predicate);
// Select-clause
cq.select((Selection<? extends Clazz>) friends2R);
Query query = getEm().createQuery(cq);
List<Object> data = query.getResultList();
return data;
}
Проблема существует из-за следующих двух строк: "Присоединиться к friends2R; friends2R = root2R.join("дневники");"
Без сопоставления (с скорректированным предложением выбора) я бы получил искомого пользователя с подходящим корневым идентификатором, чтобы не возникало ошибки. Но теперь я хочу сопоставить пользователя с дневниками и показать все дневники пользователя. Но это всегда заканчивается ошибкой впереди. Использую ли я «нравится» или «равно», это не работает.
В общем коде не должно быть ошибок, потому что я уже использую тот же код, чтобы получить всех сопоставленных пользователей пользователя (отношение «многие ко многим») => нет проблем.
Я просто не понимаю, почему возникает эта ошибка и особенно почему в ней упоминается Дневник как База, хотя пользователь должен быть упомянут как базовый класс... и идентификатор тоже правильный, и так же отображается в базе данных...
Я очень надеюсь, что вы можете мне помочь, заранее спасибо!