【发布时间】:2016-01-09 15:18:42
【问题描述】:
Predicate 的弹簧 Specification 应该是静态的还是非静态的?
默认实现类似如下:
public static Specification<Customer> byCustomerName(String name) {
return new Specification<Customer>() {
@Override
public Predicate toPredicate(Root<BasePricingCache> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.equal(root.get(Customer_.name), name);
}
};
}
但这也可以重构为:
private static final CUSTOMER_SPEC = return new Specification<Customer>() {
@Override
public Predicate toPredicate(Root<BasePricingCache> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.equal(root.get(Customer_.name), name);
}
};
public static Specification<Customer> byCustomerName(String name) {
return CUSTOMER_SPEC;
}
应该首选什么? Specifications 线程安全吗?可以这样使用吗?
【问题讨论】:
标签: java spring hibernate spring-data-jpa jpamodelgen