hibernate插入数据问题.急

rjzou2006 2007-11-05 04:53:49
当我使用这个方法的时候
public boolean insert(Message[] guoyfarr) {
try {
session = sf.openSession();
transaction = session.beginTransaction();
for (int i = 0; i < guoyfarr.length; i++) {
session.save(guoyfarr[i]);
//session.merge(guoyfarr[i]);
transaction.commit();


}
session.close();
return true;
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
}
出现这个org.hibernate.NonUniqueObjectException:
哪是因为我的主键是自动增长的,使用了同一个session而报错.
哪我新增不这样做要怎么做呢?
难道要一条数据session.open(), close()吗?
是不是会影响效率?
有没有更高效率的新增方法?

...全文
186 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rjzou2006 2007-12-07
  • 打赏
  • 举报
回复
急啊
rjzou2006 2007-12-01
  • 打赏
  • 举报
回复
同一个session里面能执行ID为自动编号的数据的多条插入的吗?
xiaokunyu 2007-11-12
  • 打赏
  • 举报
回复
snyy20

等 级:
发表于:2007-11-11 21:09:405楼 得分:0
测试一下,看看第一条数据有没有进去!如果有进去,就是你的数组里的对象有问题!

rjzou2006 2007-11-12
  • 打赏
  • 举报
回复
上面试了,还是不行呢,
出现

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.cc.hibernate.Message#com.cc.hibernate.MessageId@369f7b]
FireElement 2007-11-12
  • 打赏
  • 举报
回复
1楼的是正解
snyy20 2007-11-11
  • 打赏
  • 举报
回复
测试一下,看看第一条数据有没有进去!如果有进去,就是你的数组里的对象有问题!
fffddd 2007-11-11
  • 打赏
  • 举报
回复
不是主键的问题,楼3楼那样试试。放出来。
adamsale 2007-11-09
  • 打赏
  • 举报
回复
  开发工具HaivDb4J2ee,全称Haiv Database Tool for J2EE,是基于java编写的j2ee代码自动生成工具暨数据库管理工具,运行于jdk1.5环境中,目前版本支持Oracle、mysql、mssql三种常用的数据库,以后会视情况扩充至其它种类的关系型数据库。它的功能类似于MyEclipse的自动生成hibernate代码,但比MyEclipse功能强大N倍。
  本工具主要提供了以下功能:
  1、能通过表名、列名、列类型、表和列的注释等信息,自动生成PO类、Hibernate、VO类、struts+spring+hibernate的配置文件、Jsp文件、使用说明等文档,以实现对单表的增、删、改、查的操作。生成的代码非常规范,注释来源于表和列的注释,非常详尽。
  2、能分析任一SELECT查询语句,提取查询结果的记录集字段名称、类型,生成查询的j2ee代码,以包括上述文件。
  3、工具提供了一套完整的J2EE模板,您也可以对此模板做修改和配置,灵活运用。
  4、这个工具同时又是一个简洁易用的数据库客户端工具,它提倡开发人员将每个表和列都加上注释,实现表及注释的平面化管理,是数据库管理员和项目开发、管理人员的最佳选择。
  对于一个新的J2EE工程,本工具的使用步骤:
  一、由架构师设计本工程的底层架构。
  二、配置HaivDb4J2ee所需的工程模板,主要有增删改模板和查询模板。本步骤可以自行配置,也可联系作者进行配置。
  三、数据库设计人员设计数据库结构,建议对所有表和列增加注释(对注释的利用是本工具的亮点之一,使用本工具可以方便的增加注释)。
  四、使用本工具生成代码,程序员复制的是文件,或是整个java包,而不是一行行的代码,然后做调试和完善,即可发布。
  使用本工具之后,您将不再关心以下问题:
  1、列和PO类变量的对应关系:工具根据您的列名、列类型,自动生成Java变量名、变量类型,生成的变量名包您满意,并且绝对符合JavaBean的命名规范。
  2、文件名的命名规范:文件名采用统一的标识加后缀(如PubPersonAction.java、PubPersonView.java、PubPersonFrom.java、PubPersonLogic.java、PubPerson.java、AbstractPubPerson.java、PubPersonAdd.jsp、PubPersonSearch.jsp等)。
  3、不同层的类间代码的复制、粘贴问题:不同层的类使用相同的变量名,不需手动复制。
  4、代码分层问题:本工具将根据您的模板配置,自动实现MVC分层。
  5、日期型、数值型变量与Jsp页面交互时需手动转换类型的问题:自动在Form里生成了对应的String变量,用来和Jsp交互。
  6、代码可读性问题:代码生成非常规范,注释一应俱全,甚至包括生成时间、开发人员签名等(注:注释主要来源于数据库表、列的注释,也可手动修改)。

有需要的可与作者联系,也可下载到以下地址下载最新版本,抢先体验!
下载地址:http://haiqing.rocklv.net/soft/HaivDb4J2ee.rar

QQ 155040311
Emain englishking@qq.com
电话:13598080810

PO,Hibernate,VO,struts,spring,hibernate,Jsp,Oracle,mysql,mssql,Haiv,Database,J2EE,代码,自动,生成,java包,155040311,englishking@qq.com
xwt799023 2007-11-09
  • 打赏
  • 举报
回复
public boolean insert(Message[] guoyfarr) {
try {
session = sf.openSession();
transaction = session.beginTransaction();
for (int i = 0; i < guoyfarr.length; i++) {
session.save(guoyfarr[i]);
//session.merge(guoyfarr[i]);
}
session.flush();
session.clear();
session.getTransaction().commit();
return true;
}catch(Exception e ){
session.getTransaction().rollback();
logger.info(e.getMessage());
return false;
}finally{
session.close();
}
}
henry_y 2007-11-05
  • 打赏
  • 举报
回复
把transaction.commit();移到循环的外面看看

81,092

社区成员

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

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