① hibernate 发送sql update
你就一张表,不需 把表名用a代替,而且update语句不能代替的,又不是select;
你直接把a.都去掉就行。像这样:
update s_account set joyBeans =0, version=version+1 where accountId =5826 and version=4
② Hibernate中的SQL写法。
我比较喜欢hibernate本身自带的HQL语言,增删改查语句基本不用自己写。
添加:
Admin admin=new Admin();
admin.set...();
session.save(admin);
删除:
session.delete(admin);
修改:
Admin admin=session.load(Admin.class,new Integer(i));
session.saveOrUpdate(admin);
查询:
Query query = session.createQuery("select OBJECT(o) from Admin o order by o.adminid");
亦可写成:
Query query = session.createQuery("from Admin");
注意:hibernate的业务逻辑操作必须放在事务中,代码如下:
Transaction tr = session.beginTransaction();
try {
****增删改查语句***
// 提交事务
tr.commit();
} catch (Exception e) {
// 回滚事务
tr.rollback();
} finally {
}
还有,hibernate内的语句不是SQL,而是HQL,但它支持SQL,又它特定的写法;表名不是数据库的名字,而是映射后的实体类(表)的名字;而且,是直接对数据库进行操作,也就hibernate的事务一提交,数据库内的信息就做了相应的修改;最后,hibernate不是个软件,而是一个插件,通俗的说法是别人写好的“包”,导入项目后,根据“包”的规范去做快速开发。
③ hibernate中怎么直接操作sql语句
public SQLQuery createSQLQuery(String queryString, final Object... values) {
SQLQuery query = getCurrentSession().createSQLQuery(queryString);
if(values != null){
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
}
return query;
}
/**
* 执行SQL进行批量修改/删除操作.
*
* @param values 数量可变的参数,按顺序绑定.
* @return 更新记录数.
*/
public int sqlBatchExecute(final String sql, final Object... values) {
return createSQLQuery(sql, values).executeUpdate();
}
④ hibernate中的SQL语句写错了!
你的user表几个字段?如果就只有2个字段,insert语句就没有问题,
错的是,你采用的hibernate,可是你用的是sql语句,所以
query = session.createSQLQuery("insert into text values(?,?)");
中间的createSQLQuery,不是上边的createQuery,中间多了SQL。
这是你的错误,不过我建议你不要这样写,hibernate有个save方法,直接保存对象的,不需要你写这么复杂的sql语句,你先把user包装成对象,然后直接调用session.save(user);就可以了。
⑤ 在hibernate中能用sql进行增删改吗
觉得可以
jdbc操作的是数据 也就是sql
hibernate操作的是对象 用hql(操作实体类的对象)
例如String hql="from User(这里的User是个实体类) where name(为User类的一个属性)=? ";
可以通过query.setString(0,具体?的值);来对?进行赋值
你查询也是查的对象
hql :
增:session.save();
删:首要要写一个方法findUserById();用来查询特定的对象
查找到你要删除的对象然后session.delete(user);
改:找到药修改的对象 对其属性重新赋值之后
session.saveOrUpdate(user);即可!
⑥ 在JAVA中用hibernate持久化修改参数和通过sql修改参数 各有什么好处.和缺点
前者,比较大型,功能比较强、也复杂。。。。。。。。后者就是轻巧。。。。。。hibernate的底层也是SQL的。
⑦ Hibernate4 升级到Hibernate5 中 sql查询注意事项
在 Hibernate4 中,利用原生SQL语句查询时,
1、可使用Session.createSQLQuery(sql)建立Qurey(org.hibernate.Query),
2、可使用Query.setParameter(int index, Object obj),对sql语句中的参数根据位置进行参数值动态绑定;
升级到 Hibernate5 后
1、org.hibernate.Query被标记为@Deprecated
2、Session().createSQLQuery(sql)返回类型为org.hibernate.query.Query;
3、并且Session().createSQLQuery也已经被标记为@Deprecated;
4、可使用Session().createNativeQuery(sql)代替createSQLQuery。
5、createNativeQuery返回的Query, 不可 通过setParameter(int index, Object obj) 根据位置 进行参数值动态绑定; 只可以 通过setParameter(String paramname, Object obj) 按参数名称绑定 。
6、createNativeQuery(sql)中的sql语句中的 查询占位符
只可使用 命名参数 方式进行编写。
上问错误例子中,将导致如下错误: