hibernate 更新多条数据如何处理

问题描述

我现在用Hibernate碰到了一个问题。现在在做一个订购服务的程序,有1个会员卡,会员卡可能是企业用户,所以该会员卡对应了多个用户,我在订购服务的时候需要为这个企业用户的会员订购统一的服务,那么就需要为该会员卡上的每个用户添加一条订购服务数据。现在我在service里面的add函数中先查询出该会员卡下的所有用户,然后为每个用户添加相同的服务,调用的是dao的add函数,函数中的代码是getHibernateTemplate().save(o);在service的add函数里面循环调用dao中的add函数就会报错,说是改变了主键,然后我在dao中的add函数里面把session的缓存清理了就不报错了。可是那样一来,spring就无法进行实物管理了。因为flush以后,事务就提交了。不知道有没有解决方法。谢谢大家了。我在service里面进行业务逻辑的处理应该不是错的吧?难道说要把这些操作放在dao中的同一个事物里面进行处理????

解决方案

解决方案二:
不知道你在说什么。
解决方案三:
如果在Action里面循环不行,就在Dao里试一试,还有你再仔细检查hibernate,那里面的主键设置,看自增长是不是native
解决方案四:
lz的问题没遇到过,而且描述的也不清楚,看下来可能是hibernatepovo状态没有搞清楚,可以贴下代码
解决方案五:
Hibernate批量更新不是优势
解决方案六:
http://docs.jboss.org/hibernate/stable/core/reference/en/html/batch.html#batch-inserts方案在于自己。
解决方案七:
实际上当我知道HIBERNATE可以用SQL的时候我就不再用他本身的方法进行批量更新了实际上你把你查出来的数据需要修改的部分修改完再将sessionclearflush就可以了
解决方案八:
不是flush的问题,是你主键设置的问题。主键不要用业务键,用自增长的试试。

时间: 2024-10-23 00:08:03

hibernate 更新多条数据如何处理的相关文章

sql实现插入数据主键重复或数据已经存在,则更新这条数据

在做数据库开发的时候,经常会遇到这样的一种情景: 当一条数据不存在的时候,插入这条数据,如果这条数据的主键已经在数据库中存在,那么更新这条数据. 你们一般怎么做呢?先根据主键查询数据,然后判断是否存在数据,如果存在数据,则update字段,否则insert数据. 这样做的弊端就是需要两次连接数据库服务器,然后利用高级语言来判断是否存在的逻辑. 下面教你一条SQL语句,教你解决这类问题! 例如数据表weixin_user的表结构如下所示:(博客转移,图片丢失) $sql = "insert int

使用C# 在sqlite数据库中更新一条数据,当前应用程序中是有效的,当我关闭应用程序后,再次打开应用程序,查询,发现更改失败,请各位大神们看看什么原因,谢谢。

问题描述 使用C#在sqlite数据库中更新一条数据,当前应用程序中是有效的,当我关闭应用程序后,再次打开应用程序,查询,发现更改失败,请各位大神们看看什么原因,谢谢代码:sql="UPDATESchoolSETdelegate='北航'WHEREID=2";cmd.CommandText=sql;cmd.ExecuteNonQuery();表结构: 解决方案 本帖最后由 yyyy1999 于 2015-06-09 16:50:07 编辑解决方案二:你的cmd支持sqlite数据库吗?

Laravel 批量更新多条数据的示例

引言 最近在写任务中,碰到一个问题,需要批量更新多条数据,但是Laravel没有提供这样的方法,Google了一些方法,刚好借着任务来举例说明一下. 任务要求 任务是一个简单的清除未读通知的API,其实就是把通知表中符合user id 和 is read = 0 的行中的 is_read改为1(0代表未读,1代表已读). 方法1 我首先想到的是利用where()方法查出user id和is read符合条件的notices,然后利用foreach循环和save()更新数据表. $notices

MySql中使用INSERT INTO语句更新多条数据的例子_Mysql

我们知道当插入多条数据的时候insert支持多条语句: 复制代码 代码如下: INSERT INTO t_member (id, name, email) VALUES     (1, 'nick', 'nick@126.com'),     (4, 'angel','angel@163.com'),     (7, 'brank','ba198@126.com'); 但是对于更新记录,由于update语法不支持一次更新多条记录,只能一条一条执行: 复制代码 代码如下: UPDATE t_mem

DataGridView更新多条数据问题!!! 急!!!!!在线等!!!!!!!!!

问题描述 一次更新datagridview里面的数据,代码如下:publicBooleanUpInfo(DataTabletable){StringconnString="DataSource=ORAKSJH;user=u_ksjh;password=smksjh";OracleConnectionconn=newOracleConnection(connString);try{OracleDataAdapterrar=newOracleDataAdapter();conn.Open(

本人菜鸟求大牛帮忙修改sql下可以更快更新50w条数据,用的oracle

问题描述 declare cursor csr_dept is select company_name,BUSINESS_REG_NUM,ORG_CODE,CORE_ID from t_core_company where core_id is null for update of CORE_ID; row_dept csr_dept%rowtype; t varchar2(35);begin --for循环 for row_dept in csr_dept loop --取同义词 select

MySQL随机读取与更新n条数据的方法

随机读取数据 MYSQL自身语句便可实现,下面举例来说明: 比如,我要随机读取6条数据显示给浏览者: MYSQL语句:  代码如下 复制代码 "select * from youtable order by rand() limit 6"; 如果要随机取6-10条记录,可以这样: $num=rand()(5,10);$sql="select * from youtable order by rand() limit $num"; 不过据说,这样在数据量较大的时候效率

关于Hibernate更新的问题

问题描述 我是刚学的,问一个Hibernate的更新方法的问题getHibernateTemplate().update(entity)可以根据entity的主键来更新一个记录,但是如果想要根据条件更新多条数据呢?应该不是要循环一条条的去更新吧.我看见有个bulkUpdate的方法,参数是一个hql语句,就试了一下我的dao方法是这样的:publicvoiddelGAnswer(ExamGuestAnswerDetailsanswer){Stringhql="updateExamGuestAns

mongodb java 使用$insert 多出一条数据

问题描述 mongodb java 使用$insert 多出一条数据 使用update 更新一条数据进去的时候原数据没有被覆盖依然保存.代码如下 DBObject key = new BasicDBObject(); key.put("phone", phone); key.put("phoneCode", phoneCode); BasicDBObject updates = new BasicDBObject(); BasicDBObject doc = new