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);
這個是可以實現的,插入成功!