首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate "org.hibernate.QueryException“

Hibernate "org.hibernate.QueryException“
EN

Stack Overflow用户
提问于 2017-07-25 03:12:55
回答 2查看 381关注 0票数 0

Hibernate抛出这样的异常:

代码语言:javascript
运行
复制
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)

在此方法中:

代码语言:javascript
运行
复制
@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。知道出什么事了吗?

EN

回答 2

Stack Overflow用户

发布于 2017-07-25 03:20:42

请使用下面的示例来传递参数

代码语言:javascript
运行
复制
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();
票数 0
EN

Stack Overflow用户

发布于 2017-07-25 03:30:08

我以这种方式传入参数:

代码语言:javascript
运行
复制
@Override
public synchronized boolean addPerson(Person person){
           if (personDAO.personExists(person.getFirstName(), person.getLocation())) {
               return false;
           } else {
               personDAO.addPerson(person);
               return true;
           }
}

和在控制器中

代码语言:javascript
运行
复制
@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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45288339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档