hql/sql传中文参数出现乱码



问题:如题


解决:  推荐第一种解决方案

1.占位符

可以使用?或者:***的方式在外部配置查询参数,如:

Query query=session.createQuery("from TestStu s where s.team=:team and s.age>:age"); 或者

Query query=session.createQuery("from TestStu s where s.team=? and s.age>?);

这句话的意思是从一个持久的team对象中,取出其持有的TestStu集合,并筛选出age大于执行数据的记录

我们可以这样设置参数
query.setParameter("team",team,Hibernate.entity(TestTeam.class));
 //或者使用query.setEntity("team",team);
query.setParameter("age", 15);

但我们决不能在HQL中又出现?,又出现变量占位符,即

Query query=session.createQuery("from TestStu s where s.team=? and s.age>:age);

这样,在设置参数时候,会出现异常如下:

 cannot define positional parameter after any named parameters have been defined [from Search.filter.TestStu s where s.team=:team and s.age>?] 

2.配置文件

spring配置文件中加入红色部分
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   ........
  
   
    
      org.hibernate.dialect.SQLServerDialect
    

    

             org.hibernate.hql.classic.ClassicQueryTranslatorFactory    
     
     
   
  
.............

你可能感兴趣的:(数据库)