java hibernate修改语句执行没有报错,但数据库也没有改变是怎么回事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java hibernate修改语句执行没有报错,但数据库也没有改变是怎么回事相关的知识,希望对你有一定的参考价值。

参考技术A

    检查程序中配置的数据源,简单说就是程序有没有连错数据库

    检查事务相关配置或编码,是不是没有提交事务

追问

1,绝对连接数据库了,我修改的数据就是hibernate query.list()从数据库得到的
2,修改也要提交事务吗?这段我是在网上看的没有提交事务啊。
3,query,excuteUpdate()和session.update()那个更好,他们有什么区别,
4 ,可不可以给个关于我上边修改的详细代码

追答

对于数据更改(包括插入、修改、删除)的操作都要提交事务才能生效, 只不过用JDBC的话默认是自动提交,也就是每条语句执行完就自动提交事务了。JDBC中可以通过Connection对象的setAutoCommit(false)方法来关闭自动提交,然后用Connection对象的commit方法手工提交事务。

Hibernate的事务管理你看看你有没有配置交给JDBC或者JPA。

query.executeUpdate方法可以按照你写的sql语句进来更新,例如:

Query query = session.createQuery(“update Teacher t set t.name = ‘zhangsan’ where id = 3″);
query.executeUpdate();

而session.update(Object entity)方法是更新一个受管实体bean的所有字段,不是按SQL更新。

本回答被提问者采纳
参考技术B 可以直接在程序中使用lookup(“jdbc/Test”),但这样程序的移植以后,如果JNDI命名冲突,将需要直接更改代码;
上面的第一个方法可以通过直接更改相应的资源配置xml来解决命名冲突的问题.

hibernate 执行插入失败,该怎么处理

您好,hibernate中在使用update时,只是更改了缓存中的对应数据。需要调用Flush进行同步更新至数据库中。至于出现的原因,可能是你在某一个配置文件中写了一个相关的参数。
如果 所有配置都没问题。就是Update 语句 debug 过去 时候没任何反映。 不报错的话。
你这样做。在update 之前,先做一个 查询。然后在做个修改
我记得 以前也遇见过。然后就只能这么处理了。
参考技术A Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException

java通过jdbc连接sqlserver和oracle时出现这个异常。
虽然抛出这个异常,但对整个应用没有影响。
这个异常产生的原因是jar包的版本不对。
连接oracle10g的jdbc用ojdbc6.jar(1942k),
连接sqlserver2008用sqljdbc.jar(570k),
而不用sqljdbc4.jar(567k)。
postgres用postgresql-8.2-504.jdbc3.jar

以上是关于java hibernate修改语句执行没有报错,但数据库也没有改变是怎么回事的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 调用存储过程 该语句没有返回结果集

hibernate 执行update更新语句 结果数据没有更新是怎么回事?求解!!!急急急~!!

hibernate 使用sql server的存储过程时没有返回值

Hibernate的merge()方法

hibernate 执行插入失败,该怎么处理

解决Hibernate4执行update操作,不更新数据的问题