我正在使用spring-data-mongodb 1.2.0和QueryDSL 2.9.0。
为什么QueryDslPredicateExecutor
没有delete(Predicate predicate)
方法?
有没有解决办法?
我正在使用spring-data-mongodb 1.2.0和QueryDSL 2.9.0。
为什么QueryDslPredicateExecutor
没有delete(Predicate predicate)
方法?
有没有解决办法?
QMyObj obj= new QMyObj("myObj");
Iterable<MyObj> myObjs = myObjRepository.findAll(obj.property.eq("property"));
myObjRepository.delete(myObjs);
首先,我创建了一个 Q 类的实例,然后基于谓词查找所有对象。接下来调用仓库的 void delete(Iterable<? extends T> entities)
方法。
可能是因为这个解决方法,他们没有提供它,但这需要由 Spring Source 的人来确认。
@Autowired
LocalContainerEntityManagerFactoryBean emFactory;
EntityManager em;
@PostConstruct
private void setup(){
em = emFactory.getObject().createEntityManager();
}
@Transactional private voide deleteByPredicate(Predicate predicate) {
JPADeleteClause deleteClause = new JPADeleteClause(em, QPersonEntity.personEntity);
em.joinTransaction();
deleteClause.where(predicate).execute();
}
QPersonEntity path = QPersonEntity.personEntity;
JPADeleteClause deleteClause = new JPADeleteClause(getEntityManager(), path);
deleteClause.where(path.name.eq("behrooz")).execute();