-
hibernate session.createSQLQuery(sql).executeUpdate()更新不成功5
请问大家有没有遇到过 session.createSQLQuery(sql).executeUpdate()更新不成功的情况呢,sql写的没有问题
sql="update T_OA_DOCINFO set states='1' where id in(select name from T_OA_DOC_INOUTDETAILS where inoutid='"+dto.getId()+"')"
问题补充:这个语句就是偶尔执行不成功,大部分机会还是能执行成功的2014年7月16日 12:27
7个答案 按时间排序 按投票排序
-
你的SQL在语法上没有问题,你看看你的id和name在类型上是否对应,如果没有问题,你就要看的事务机制是否配置正确,另外如果你是跑单元测试的话,数据库也不会执行修改操作。
2014年7月17日 17:31
-
执行不成功指的是什么呢?记录 报错还是数据库里的数据不合理。建议把当时的场景都记录下来分析,按理说不存在偶尔的问题。数据库的靠谱我们应该信任。极有可能是数据有问题,你可以把场景数据都记录一下再分析
2014年7月16日 23:28
-
你这个语句本身没有语法问题。存在问题的可能是:
1、你的id和name不匹配的问题
2、你的in里面的语句查不到值。
3、你更新语句所在的事务没有提交。2014年7月16日 16:25
-
肯定有问题啊,你的条件是id in (select...)结果你的select语句查询的name,
你该成select id from T_OA_DOC_INOUTDETAILS where inoutid='"+dto.getId()+"')"
或者用exists2014年7月16日 13:08
-
总感觉sql怪怪的
sql="update T_OA_DOCINFO set states='1' where id in(select [color=red]name[/color] from T_OA_DOC_INOUTDETAILS where inoutid='"+dto.getId()+"')"
你先在数据库里执行下这条语句看能不能成功.2014年7月16日 12:45
相关推荐
Hibernate的`Session`接口提供了`createSQLQuery()`方法,允许我们直接编写SQL语句。例如: ```java Session session = sessionFactory.openSession(); SQLQuery query = session.createSQLQuery("SELECT * FROM...
在每次更新后调用`session.flush()`强制Hibernate执行当前的数据库操作,然后使用`session.evict(entity)`将实体从缓存中移除。这样做可以确保每个更新操作仅执行一次,并且避免了持久化上下文中的内存浪费。 ```...
3. **利用HQL或SQL进行批量更新**:对于简单的情况,可以直接使用HQL或SQL进行批量更新,这种方式不需要加载每一行数据到内存中。 ```java session.createSQLQuery("UPDATE user SET name='newName' WHERE id IN ...
在上述代码中,我们首先定义了一个SQL字符串,然后使用`session.createSQLQuery(sql)`创建一个NSQL查询对象,并通过`query.setString()`设置参数值。最后,调用`query.executeUpdate()`执行插入操作,并根据返回值...
SQLQuery query = session.createSQLQuery("CALL myProcedure(:param1, :param2)"); ``` 2. **设置参数** 使用setXXX方法设置存储过程的输入或输出参数,其中XXX代表参数类型(如setString、setInteger等)。...
接下来,通过`session.createSQLQuery`创建一个SQL查询,并将存储过程的调用语句以`{call ProcedureName}`的格式传递给它。在本例中,存储过程名为`CommandAdapter`,并传入四个参数,分别通过`query.setString`和`...
- 使用`Session.createSQLQuery()`或`Session.createQuery()`构建HQL(Hibernate Query Language)或SQL查询,然后调用`addBatch()`添加待执行的参数,最后调用`executeUpdate()`执行批量操作。 6. **通过 ...
- 使用`Session.createSQLQuery()`方法创建SQLQuery对象,然后通过`addScalar()`指定返回值类型,`executeUpdate()`或`list()`执行存储过程。 3. **调用存储过程的方法** - **简单调用**:对于无参数或只接收输入...
- **创建SQL查询**:使用`Session`的`createSQLQuery`方法,传入存储过程的SQL调用语句,如`CALL myProcedure(?, ?)`。 - **设置参数**:使用`setXXX`方法(根据参数类型,如`setString`, `setInteger`等)设置...
3. **创建SQLQuery对象**:在Hibernate中,使用`Session`对象的`createSQLQuery()`方法创建`SQLQuery`对象,这个对象可以执行SQL语句。你可以传递读取到的SQL语句到这个方法。 4. **设置参数和类型**:如果SQL语句...
1. 使用`SQLQuery`对象:通过Session的`createSQLQuery`方法创建`SQLQuery`对象,然后设置存储过程的SQL语句(包括IN、OUT或INOUT参数),并调用`executeUpdate`或`list`方法执行。 ```java Session session = ...
在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...
- `Query query = session.createSQLQuery("SELECT * FROM users WHERE age > ?");` - `query.setInteger(0, 18);` #### 分页查询 - **定义**:通过限制查询结果的数量和偏移量来进行分页。 - **方法**: - `...
在这个示例中,我们直接写了一个SQL更新语句,然后通过`createSQLQuery`创建一个SQL查询对象,执行`executeUpdate`来完成更新。 3. **通过OID更新** Hibernate提供了`session.update()`方法,通过对象的主键(OID...
SQLQuery sqlQuery = session.createSQLQuery("{call 漤(?)}"); sqlQuery.setString(0, "String"); sqlQuery.executeUpdate(); ``` 2. **使用JDBC API**: - 获取当前会话的连接。 - 创建`CallableStatement`...
调用存储过程时,我们需要创建一个Hibernate的Session对象,然后利用Session的`createSQLQuery`方法来执行存储过程。例如,调用`getUserList`过程可以写成: ```java Session session = HibernateUtil....
在配置完成后,我们可以在C#代码中通过SessionFactory获取Session对象,然后使用Session的CreateSQLQuery方法来执行存储过程: ```csharp ISession session = sessionFactory.OpenSession(); IQuery query = ...
- `Session.createSQLQuery(String sql)`:创建SQL查询对象,可以执行SELECT、INSERT、UPDATE、DELETE等操作。 - 结果集映射:使用`addScalar()`或`setResultTransformer()`将SQL查询结果映射到Java对象。 - 执行...
在Hibernate中,可以通过Session的createQuery()或createSQLQuery()方法创建HQL查询对象,然后调用executeUpdate()或list()方法执行查询并获取结果。 ### 8. 注意事项 - HQL查询的结果是对象列表,而非原始数据,...