今天在做数据库更新时,只有中文出现了乱码,其他的数据都是正常的,经过多次试验,则是因为HQL语句的传值方式的原因。
Query query = this.getSession().createQuery("update Entity set name = '"+map.get("Name")+"' where id = ?");
query.setString(0,(String)map,get("ID"));
这样更新的就在数据库出现了中文的乱码
Query query = this.getSession().createQuery("update Entity set name = ? where id = ?");
query.setString(0,(String)map.get("Name"));
query.setString(1,(String)map.get("ID"));
修改后就数据库中的中文汉字就不会再是乱码了。
原先在做HQL更新时间时候,这个问题也困扰了我好长时间。
Query query = this.getSession().createQuery("update Entity set date= ? where id = ?");
query.setDate(0,date);
query.setString(1,(String)map.get("ID"));
这个方法是可以的,还有种方法刚开始的时候还是正常的,但不知道为什么后来就不行了
Query query = this.getSession().createQuery("update Entity set date= :date where id = ?").setDate("date",date);
query.setString(0,(String)map.get("ID"));
所以用HQL更新时间多用第一种方法