Hibernate抛出这样的异常:
org.hibernate.QueryException: Expected positional parameter count: 2, actually detected 0
at org.hibernate.query.internal.QueryParameterBindingsImpl.verifyParametersBound(QueryParameterBindingsImpl.java:270)
at org.hibernate.query.internal.AbstractProducedQuery.beforeQuery(AbstractProducedQuery.java:1309)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1408)
at org.hibernate.query.Query.getResultList(Query.java:146)
at pl.code.dao.PersonDAO.personExists(PersonDAO.java:59)
在此方法中:
@Override
public boolean personExists(String firstName, String location) {
TypedQuery<Person> query = entityManager.createQuery("Select p FROM Person p WHERE p.firstName = ? and p.location = ?", Person.class);
List<Person> all = query.getResultList();
return all.size() > 0 ? true : false;
}
我使用的是Hibernate版本5.2.9 using。知道出什么事了吗?
发布于 2017-07-25 03:20:42
请使用下面的示例来传递参数
Query q =session.createQuery("select u from User u where u.location=? and u.id in (:user_ids)");
q.setParameter(0, location);
q.setParameterList("user_ids", userIds);
return q.list();
发布于 2017-07-25 03:30:08
我以这种方式传入参数:
@Override
public synchronized boolean addPerson(Person person){
if (personDAO.personExists(person.getFirstName(), person.getLocation())) {
return false;
} else {
personDAO.addPerson(person);
return true;
}
}
和在控制器中
@RequestMapping(value= "/person", method = RequestMethod.POST)
public ResponseEntity<Void> addPerson(@RequestBody Person person, UriComponentsBuilder builder) {
boolean flag = personService.addPerson(person);
if (flag == false) {
return new ResponseEntity<Void>(HttpStatus.CONFLICT);
}
HttpHeaders headers = new HttpHeaders();
headers.setLocation(builder.path("/person/{id}").buildAndExpand(person.getPid()).toUri());
return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
}
https://stackoverflow.com/questions/45288339
复制相似问题