hibernate的保存问题(问题有点急,小女子在此先谢过大家了哈)

苜蓿gt 2014-03-07 03:10:08
问题描述:
执行:
User user=new User();
user.setName("abc");
userDao.save(user);
我可以打印出ID:System.out.println(user.getId());
但是:数据库中没有存入我的数据
在此过程中,程序并没有报错。
同样的:我朋友在他电脑上访问我的数据库,同样的代码,他能成功保存。

谢谢大家了!
看在女生节的份上,大家帮帮小女子吧!急~~~
...全文
757 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
Super赛亚人 2014-03-11
  • 打赏
  • 举报
回复
引用 43 楼 u010111184 的回复:
[quote=引用 36 楼 qq573616 的回复:] [quote=引用 1 楼 u011559804 的回复:] 不给user id能save?
是我孤陋寡闻还是你误人子弟,save 要毛的id,update 才要吧。 楼主如果可以得到id,hibernate 的 看看flush 方法,将数据刷新[/quote] 其实save的时候也可以定义id的,不过明显不如直接用序列好~不是说不能用~[/quote] 是可以用啊,但是这哥们说的是没id 不能save
苜蓿gt 2014-03-11
  • 打赏
  • 举报
回复
最后,谢谢大家的帮助。
苜蓿gt 2014-03-11
  • 打赏
  • 举报
回复
问题解决了,很弱智的错误。程序没有问题,访问传参错了。 错误:http://www.***/***?&name=abc 正确:http://www.***/***?name=abc
slade_yu 2014-03-11
  • 打赏
  • 举报
回复
把你的basedao发出来看看
苜蓿gt 2014-03-11
  • 打赏
  • 举报
回复
这两天在维护另一个系统,所以还没来个急解决这个问题。 我觉得我的问题出在我程序save了,但是没有被save到数据库中。
引用 36 楼 qq573616 的回复:
是我孤陋寡闻还是你误人子弟,save 要毛的id,update 才要吧。 楼主如果可以得到id,hibernate 的 看看flush 方法,将数据刷新
引用 42 楼 yzxgenius 的回复:
不要用的spring管理事务,spring管理事务本来存在导致数据库连接锁死的bug,用hibernate管理事务。
Legend-Hu 2014-03-10
  • 打赏
  • 举报
回复
引用 37 楼 u011559804 的回复:
[quote=引用 36 楼 qq573616 的回复:] [quote=引用 1 楼 u011559804 的回复:] 不给user id能save?
是我孤陋寡闻还是你误人子弟,save 要毛的id,update 才要吧。 楼主如果可以得到id,hibernate 的 看看flush 方法,将数据刷新[/quote] 好吧,脑抽了。。。[/quote] 学习了!
  • 打赏
  • 举报
回复
引用 1 楼 u011559804 的回复:
不给user id能save?
不给id也行的!数据库配置主键id为自增的就行了!
Super赛亚人 2014-03-10
  • 打赏
  • 举报
回复
楼主,我的看法 是因为 你的family 与user 是一对一对应关系,你开始dao.save(family),family还在session 中,在保存user 也就把 family 再保存一次,大概是二级缓存的原因,2次取的family 是一样的。所以出错。在dao.save(family) 时,强制刷新flush方法
sliwey 2014-03-10
  • 打赏
  • 举报
回复
引用 36 楼 qq573616 的回复:
[quote=引用 1 楼 u011559804 的回复:] 不给user id能save?
是我孤陋寡闻还是你误人子弟,save 要毛的id,update 才要吧。 楼主如果可以得到id,hibernate 的 看看flush 方法,将数据刷新[/quote] 好吧,脑抽了。。。
Super赛亚人 2014-03-10
  • 打赏
  • 举报
回复
引用 1 楼 u011559804 的回复:
不给user id能save?
是我孤陋寡闻还是你误人子弟,save 要毛的id,update 才要吧。 楼主如果可以得到id,hibernate 的 看看flush 方法,将数据刷新
逍遥jc 2014-03-10
  • 打赏
  • 举报
回复
引用 36 楼 qq573616 的回复:
[quote=引用 1 楼 u011559804 的回复:] 不给user id能save?
是我孤陋寡闻还是你误人子弟,save 要毛的id,update 才要吧。 楼主如果可以得到id,hibernate 的 看看flush 方法,将数据刷新[/quote] 其实save的时候也可以定义id的,不过明显不如直接用序列好~不是说不能用~
slade_yu 2014-03-10
  • 打赏
  • 举报
回复
不要用的spring管理事务,spring管理事务本来存在导致数据库连接锁死的bug,用hibernate管理事务。
only_qin_wo 2014-03-10
  • 打赏
  • 举报
回复
在user.hbm文件中看看 对family的配置。 也可能是重复保存
young4u2011 2014-03-09
  • 打赏
  • 举报
回复
目测Family和User对应的表中主键id为int类型,且自增,所以new新对象后,使用save()会自动给id赋值。Family和User之间不知道是“一对多”还是“多对多”的关系,暂且当“一对多”。
引用 11 楼 gt_1234567 的回复:
[quote=引用 4 楼 l359122505 的回复:] 提供的线索有点少啊,不好判断,妹子,多提供些代码
引用 9 楼 zhangxiaojie0321 的回复:
妹子 上代码吧。
代码太长了,我就简单概述哈 代码: Family family=new Family(); System.out.println("family="+family.getId()); familyDao.save(family); System.out.println("family="+family.getId()); User user=new User(); user.setFamily(family); userDao.save(user); 报错: family=:null Hibernate: insert into Zhijia_Gfamily_T_UserFamily (FamilyCode, FamilyNickName, FamilyNum, RegisterTime, MicroSignal, QQ, SinaTwitterNo, QQTwitterNo, Email, MolbilePhone, Remark, UserID, AvatarUrl) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) family=:44 Hibernate: select familyacco0_.AccountID as AccountID27_, familyacco0_.FamilyID as FamilyID27_, familyacco0_.AccountCode as AccountC3_27_, familyacco0_.NoticeState as NoticeSt4_27_, familyacco0_.CurGoldNum as CurGoldNum27_, familyacco0_.RecGoldNum as RecGoldNum27_, familyacco0_.PreGoldNum as PreGoldNum27_, familyacco0_.Remark as Remark27_ from Zhijia_Gfamily_T_FamilyAccount familyacco0_ order by familyacco0_.AccountID desc limit ? Hibernate: insert into Zhijia_Gfamily_T_FamilyAccount (FamilyID, AccountCode, NoticeState, CurGoldNum, RecGoldNum, PreGoldNum, Remark) values (?, ?, ?, ?, ?, ?, ?) Hibernate: select user0_.UserID as UserID33_, user0_.FamilyID as FamilyID33_, user0_.UserCode as UserCode33_, user0_.MolbilePhone as MolbileP4_33_, user0_.Password as Password33_, user0_.MicroSignal as MicroSig6_33_, user0_.QQ as QQ33_, user0_.SinaTwitterNo as SinaTwit8_33_, user0_.QQTwitterNo as QQTwitte9_33_, user0_.Email as Email33_, user0_.RealName as RealName33_, user0_.NickName as NickName33_, user0_.Sex as Sex33_, user0_.OnlineGameID as OnlineG14_33_, user0_.RegisterTime as Registe15_33_, user0_.Remark as Remark33_, user0_.SinaCode as SinaCode33_, user0_.QQCode as QQCode33_, user0_.isHead as isHead33_, user0_.MachineCode as Machine20_33_, user0_.IsVisitor as IsVisitor33_, user0_.AvatarID as AvatarID33_, user0_.RoleID as RoleID33_ from Zhijia_Gfamily_T_User user0_ where user0_.MachineCode=? and user0_.IsVisitor=0 org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session: [com.zhijia.gfamily.po.player.User#13]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.zhijia.gfamily.po.player.User#13] at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:661)[/quote] 然后,看看hbm中是如何维护Family和User的关系,如果是由Family中维护,在Family的hbm中应该有“one-to-many”,如果是由User维护,在User的hbm中应该有“many-to-one”。看报错的样子像是前一种情况,而且在<set>中设置了cascade="save-update"属性。不知道你的示例代码是不是完整的,在userDao.save(user);这句之前,有没有类似family.getUsers().add(user);这样的语句。
放纵的青春 2014-03-08
  • 打赏
  • 举报
回复
根据你的报错信息目测的话 是因为你数据库中有一个id为13的user对象 而你新插入的这个对象id还是userid=13?
孙来贵 2014-03-07
  • 打赏
  • 举报
回复
引用 14 楼 gt_1234567 的回复:
再补充一段: Caused by: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.zhijia.gfamily.po.player.User#13]
这个错误很明显,相同的对象有冲突了,session中的user对象与familily.getId()关联的user对象冲突了,解决办法很简单,session 中有就直接用,没有在get就可以了;不解释
sxl-shuai 2014-03-07
  • 打赏
  • 举报
回复
大神好 多
苜蓿gt 2014-03-07
  • 打赏
  • 举报
回复
引用 22 楼 heaimnmn 的回复:
我知道啊,我说你在服务器端写个main函数调用试试,可以插入吗?
刚测试错了 都可以插入
苜蓿gt 2014-03-07
  • 打赏
  • 举报
回复
引用 29 楼 u010241813 的回复:

session.beginTransaction().commit();
有没有提交事务
这个不是框架自动管理了么?我没有写
  • 打赏
  • 举报
回复

session.beginTransaction().commit();
有没有提交事务
加载更多回复(27)
内容概要:LTK8319是一款单通道H桥有刷直流电机驱动器,工作电压范围为2.5V至12V,支持最高3.9A的峰值电流和2.5A的平均电流驱动能力,适用于小家电、玩具、电子锁、机器人等小型电动设备。该芯片通过两个逻辑输入(INA和INB)控制电机的正转、反转、停止与刹车,并支持PWM调速控制。集成欠压锁定(UVLO)、过温保护(TSD)及自动故障恢复功能,确保系统安全可靠运行。当INA和INB持续为低电平时,芯片进入低功耗休眠模式,显著降低静态功耗。采用ESOP-8封装,符合环保无铅标准。; 适合人群:电子工程师、嵌入式系统开发者、电机控制技术人员,以及从事小型机电产品研发的设计人员;具备基本电路知识和电机控制经验者更佳。; 使用场景及目标:①用于驱动小型有刷直流电机或步进电机的一个绕组,实现精确的方向与速度控制;②适用于电池供电设备中对功耗敏感的应用,利用休眠模式延长续航时间;③在电机启停频繁、负载波动大的场合,发挥其电流控制与保护机制优势,提升系统稳定性。; 阅读建议:此文档提供了详细的电气特性、功能逻辑表、保护机制与时序参数,建议结合典型应用电路进行硬件设计,并重点关注电源去耦电容选型、散热布局及PWM频率设置(不超过100kHz),以确保系统可靠运行。
内容概要:本文研究了一种基于遗传算法(GA)与粒子群优化算法(PSO)融合的无人机三维路径规划方法,旨在解决复杂环境中无人机避障与路径优化的问题。通过构建三维空间环境模型,提出一种结合GA全局搜索能力强与PSO收敛速度快优势的混合优化策略,并利用Matlab平台完成算法仿真与路径可视化。研究不仅实现了无人机在存在多个障碍物场景下的安全、高效飞行路径规划,还对GA与PSO两种算法在路径长度、计算耗时、收敛稳定性等方面进行了对比分析,评估其性能差异,为实际应用中算法选型提供依据。; 适合人群:具备一定算法设计基础和Matlab编程能力的科研人员、自动化与人工智能方向的研究生,以及从事无人机导航、智能控制等相关领域的工程技术人员。; 使用场景及目标:①应用于城市密集建筑区、山地森林等复杂地形中的无人机自主巡检与应救援任务;②为智能交通、地理测绘、灾害监测等需要自主路径决策的无人系统提供算法支持与仿真验证;③通过对比不同智能优化算法的表现,辅助研究人员在特定应用场景下选择最优路径规划方案。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实验,调整种群规模、迭代次数、障碍物分布等参数,深入理解算法运行机制与性能表现,并可进一步拓展至动态环境更新、多无人机协同避障等更复杂的研究方向。

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧