Я столкнулся с некоторой проблемой привязки параметров: < /p>
Java.lang.illegalargumentException: не может создать связы org.hibernate.query.sqm.tree.expression.valuebindjpacriteriaparameter@a19fe87]
Ссылка не является параметром этого запроса < /li>
< /ul>
< /blockquote>
, когда мы пробуем мигрировать в Hibernate 6 в следующем методе: < /p>
public List findByListOfSubDocumentsAndDateRange(
final List subDocuments,
final Date effDate,
final Date endDate
) {
final Session session = getSessionFactory().getCurrentSession();
final CriteriaBuilder builder = session.getCriteriaBuilder();
final CriteriaQuery criteria = builder.createQuery(A.class);
final Root root = criteria.from(A.class);
// Split input list into batches of 1000 items
final int batchSize = 1000;
List results = new ArrayList();
for (int i = 0; i < subDocuments.size(); i += batchSize) {
List batchList = subDocuments.subList(i, Math.min(i + batchSize, subDocuments.size()));
// Create predicates
List
predicates = new ArrayList();
predicates.add(root.get(PRIMARY_KEY).get(COLUMN1).in(batchList));
predicates.add(builder.lessThanOrEqualTo(root.get(PRIMARY_KEY).get(COLUMN2), effDate));
if (endDate != null) {
predicates.add(builder.greaterThanOrEqualTo(root.get(PRIMARY_KEY).get(COLUMN_ENDDATE), endDate));
}
criteria.select(root).where(predicates.toArray(new Predicate[0]));
// Execute batch query and collect results
results.addAll(session.createQuery(criteria).getResultList());
}
return results;
}
< /code>
Здесь мы выполняем пакетирование, чтобы повысить производительность запроса. FOR LOOP Тест интеграции работает только при добавлении пакета, который он не сработал.
Любые идеи о том, как решить эту проблему. Я попытался проверить Hibernate 6 Docs не смогли найти причину для этого вопроса.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ibernate-5