有没有办法将规范转换为org.hibernate.Criteria?
我有服务A,它产生规范(我无法修改它),我必须使用此规范来生成FORWARD_ONLY ScrollableResults,这在规范中尚不支持 - 有什么方法可以做到吗?
答案 0 :(得分:0)
规范界面有一个toPredicate方法,您可以使用
public interface Specification<T> {
/**
* Creates a WHERE clause for a query of the referenced entity in form of a {@link Predicate} for the given
* {@link Root} and {@link CriteriaQuery}.
*
* @param root
* @param query
* @return a {@link Predicate}, must not be {@literal null}.
*/
Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb);
}
然后你的代码看起来像这样(未经测试):
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<String> query = builder.createQuery(String.class);
Root<DomainObject> domainRoot = query.from(Customer.class);
Predicate predicate = DomainSpec.like('xyz').toPredicate(domainRoot , query, builder);
query = query.where(predicate);