-1
有沒有辦法將規範轉換爲org.hibernate.Criteria?將規範轉換爲條件
我有服務A生產規範(我不能修改它),我不得不消費這個規範來生成FORWARD_ONLY ScrollableResults,這是尚未支持的規範 - 有沒有辦法做到這一點?
有沒有辦法將規範轉換爲org.hibernate.Criteria?將規範轉換爲條件
我有服務A生產規範(我不能修改它),我不得不消費這個規範來生成FORWARD_ONLY ScrollableResults,這是尚未支持的規範 - 有沒有辦法做到這一點?
規格接口有,你可以用它來
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);
}
一個toPredicate方法然後你的代碼看起來像這樣(未測試):
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);
通過'Criteria'我指的是舊的組織.hibernate.Criteria,而不是CriteriaBuilder – zibi