有2个表, CASE案件表, COOP协助表。
CREATE TABLE `casebase` (
  `CasebaseID` int(11) NOT NULL auto_increment,
  `Casename` varchar(100) default 'null',
  `Casestyle` int(11) default '0',
  `Casenumber` varchar(100) default 'null',
  `Casesort` int(11) default '0',
  `Casestart` varchar(100) default 'null',
  `Caseend` varchar(100) default '0',
  `Build` text,
  `Consign` text,
  `Invest` text,
  `Principal` varchar(100) default NULL,
  `Buildperson` varchar(100) default NULL,
  `Buildtel` varchar(100) default NULL,
  `Institution` int(11) default '0',
  `Affairstyle` int(11) default '0',
  `Area` varchar(100) default 'null',
  `Buildspace` double default '0',
  `Buildarea` double default '0',
  `Cubagetarea` float default '0',
  `Builddensity` double default '0',
  `Casetenor` int(11) default '0',
  `Checkupdate` varchar(100) default NULL,
  `Totalmoney` double default '0',
  `DesinmainTrue` varchar(100) default NULL,
  `DesinmainRandom` varchar(100) default NULL,
  `DesinmainDoc` int(11) default '0',
  `ReTrue` varchar(100) default NULL,
  `ReRandom` varchar(100) default NULL,
  `ReDoc` int(11) default '0',
  `FrameshapeTrue` varchar(100) default NULL,
  `FrameshapeRandom` varchar(100) default NULL,
  `FrameshapeDoc` int(11) default '0',
  `Userid` int(11) default '0',
  `bargainNumber` varchar(200) default 'null',
  `bidDocName` text,
  `bidDocSaveName` text,
  `biddoc` varchar(30) default '0',
  `type` varchar(20) default NULL,
  `presidedepartment` int(11) default '0',
  `layer` int(11) default '1',
  `client` int(11) default '0',
  `mytype` varchar(20) default 'null',
  `biddocc` varchar(30) default '0',
  `bidDocNamee` text,
  `bidDocSaveNamee` text,
  `danfu` int(11) NOT NULL default '0',
  `pingshi` int(11) NOT NULL default '0',
  `zhanshi` int(11) NOT NULL default '0',
  `ywnumber` varchar(20) default NULL,
  `rfarea` double default '0',
  `dmshejiyuan` varchar(50) default NULL,
  `dmsjyjxuser` varchar(50) default NULL,
  `dmsjyjxusertel` varchar(50) default NULL,
  `lxdate` varchar(20) default NULL,
  `projectManager` varchar(100) default NULL,
  `projectReceiver` varchar(100) default NULL,
  `changeStatusDate` varchar(50) default NULL,
  `status` varchar(50) default '44001',
  PRIMARY KEY  (`CasebaseID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `casecoop` (
  `CasecoopID` int(11) NOT NULL auto_increment,
  `Coopcaseid` int(11) NOT NULL default '0',
  `CustomerID` int(11) NOT NULL default '0',
  `Sum` varchar(100) NOT NULL default '',
  `Allot` varchar(100) NOT NULL default '',
  `CasenumberID` int(11) NOT NULL default '0',
  PRIMARY KEY  (`CasecoopID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
2个表没有关联的, 大家看得到, 但是通过casecoop.Coopcaseid关联casebase.CasebaseID主键。
现在问题是, 我想插入一条记录到casebase表, 插入数据表之前没有分配casebaseID的吧?同时我要插入几条数据到casecoop表, 那我要怎样写插入语句呢?最好可以用hibernate实现, 谢谢了,各位大大, 不够分的再说, 除了分我没有别的可以表达感谢了……

解决方案 »

  1.   

    Hibernate在配置文件中配置好这两个表之间的关联关系,可以设置级联保存。cascade="save-update"
      

  2.   

    插入一条记录到casebase表, 插入数据表之前没有分配casebaseID的吧
    是的,插入前没有ID,你可以通过 LAST_INSERT_ID() 得到刚插入记录的ID
      

  3.   

    这个得用中间变量了!!!因为对于第一个表来说,有自增,第二个同样有自增。但是LAST_INSERT_ID是SESSION级别的。 而你的这两条语句又是在同一个SESSION里面,所以呢。第一个张表插完后,set @tmp_id = last_insert_id();
    完了,在第二张表的插入语句里面把对应的ID换成@tmp_id即可。
      

  4.   

    用自增字段可用last_insert_id()取得最新插入的ID值
      

  5.   

    先谢谢各位大哥了
    hibernate的session.last_insert_id()???有这个方法的?
    还是说是默认的存储过程?
      

  6.   

    LAST_INSERT_ID()  是MYSQL的一个函数。 在MYSQL中也可以用 @@identity至于hibernate中,则需要看hibernate的手册了。