现有主表a,子表sub_a,中间有a_id 存在关联,现在java程序中需要主子表同事保存,而且存在多个子记录。
不用hibernate的处理方式,有其他方式吗?处理方式不能使用先保存主表,后获取id,再赋值子表外键,保存的方式。
必须同时保存。

解决方案 »

  1.   

    难得见你发贴啊。
    存储过程。
    除非你的mysql版本不支持存储过程。
      

  2.   

    不管你用什么处理,都是先往主表插入数据,获得主键值再往子表查,只是可以用一条sql语句完成!sql参照
    declare @id bigint
    insert into a (字段名,字段名) values
    (值,值)
    select @id=@@identity//主键值
    insert into sub_a (字段名,字段名)values
    ('值',@id)
      

  3.   

    自己找到解答方案啦,使用LAST_INSERT_ID()函数
      

  4.   

    我现在的项目中也有这个需求,后来没找到好的解决办法,存在主表和子表关系时就没用自增字段了,惭愧!
    LAST_INSERT_ID()函数,学习下……
      

  5.   

    LAST_INSERT_ID()有隐含BUG,如果有多用户在批量操作有自增字段时,取到的自增LAST_INSERT_ID有可能不是自己想要的。
      

  6.   

    “LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。”文章没看完,你的是对的。