SSH项目,今天用到向数据库插入数据,写好了hql语句但是报错。于是百度了一下。
因为Hibernate的HQL语言是用于面向对象实现查询功能的,
然而在插入操作中是不会牵涉任何查询动作的,所以HQL不能用于insert语句的插入操作,而select、update、delete语句都可以有可能的查询实现,比如:
select语句时标准的查询,这个就不用再说了
update语句:update 对象名 set…where…
delete:delete from 对象名 where …
所以,update与delete牵涉到where的查询筛选过程,这个过程是需要采用HQL来实现的,然而insert永远牵涉不到查询筛选过程,所以Hibernate没有对插入做insert实现。
有的解决方案说,将hql语句换成sql语句。于是更改如下:
public void save(String username, String password,String role) {
String sql = "insert into user(username,password,role) values('"+username+"','"+password+",'"+role+"')";
getSession().createSQLQuery(sql).executeUpdate();
}
但是,我的还是一直报错,如图:
很遗憾,我没有解决这个问题,但是我看到另一种解决办法:
UserEntity userEntity = new UserEntity();
userEntity.setUsername(getUsername());
userEntity.setPassword(getPassword());
userEntity.setRole("manager");
userService.saveUser(userEntity);
这个是可以实现的,插入成功!