hibernate如何获取刚插入数据的id?

ruby09301112 发布于 2014/09/18 17:43
阅读 3K+
收藏 0

我的代码是这样的:

public long stickParttimeJob(String ptid) {
long id = Long.parseLong(ptid);
Session session = getSession();
        Query query = session.createQuery(
        "FROM T_ParttimejobBean WHERE id = ?");
        
        String hql = "select last_insert_id() from T_ParttimejobBean";
        
        String hql2 = "delete T_ParttimejobBean where id = " + id;
        
        query.setParameter(0, id);
        List<ParttimejobBean> parttimejobBeanList = query.list();
       
        long flag = 0;
        
        if(parttimejobBeanList == null || parttimejobBeanList.size() <= 0){
        return flag;
        }
        
        ParttimejobBean parttimejobBean = new ParttimejobBean();
        parttimejobBean.setCompanyName(parttimejobBeanList.get(0).getCompanyName());
parttimejobBean.setJobTitle(parttimejobBeanList.get(0).getJobTitle());
parttimejobBean.setJobType(parttimejobBeanList.get(0).getJobType());
parttimejobBean.setSalary(parttimejobBeanList.get(0).getSalary());
parttimejobBean.setTelephone(parttimejobBeanList.get(0).getTelephone());
parttimejobBean.setWorkTime(parttimejobBeanList.get(0).getWorkTime());
parttimejobBean.setWorkArea(parttimejobBeanList.get(0).getWorkArea());
parttimejobBean.setDetailMsg(parttimejobBeanList.get(0).getDetailMsg());
parttimejobBean.setCompanyAddr(parttimejobBeanList.get(0).getCompanyAddr());
parttimejobBean.setAboutService(parttimejobBeanList.get(0).getAboutService());
parttimejobBean.setLinkMan(parttimejobBeanList.get(0).getLinkMan());
parttimejobBean.setMedia_member_id(parttimejobBeanList.get(0).getMedia_member_id());
parttimejobBean.setMedia_member_account(parttimejobBeanList.get(0).getMedia_member_account());
parttimejobBean.setPublishDate(new Date());
   
        try
        {
        flag = (Long)getSession().save(parttimejobBean);
        if(flag != 0){
        Query query3 = session.createQuery(hql2);
       
        int ref = query3.executeUpdate();
       
        if(ref != 0){
        Query query2 = session.createQuery(hql);
           
            int last_insert_id = query2.executeUpdate();
           
            System.out.println("刚插入的数据的id为:" + last_insert_id);
           
            flag = (long)last_insert_id-1;        }
        }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    return flag;
}

下面这两句可能出错了,但是不晓得怎么改?

Query query2 = session.createQuery(hql);

int last_insert_id = query2.executeUpdate();


以下是问题补充:

@ruby09301112:Query query2 = session.createQuery(hql); int last_insert_id = query2.executeUpdate(); System.out.println("刚插入的数据的id为:" + last_insert_id); flag = (long)last_insert_id-1; } 这一段直接改成 flag = parttimejobBean.getId(); 就ok了,之前搞的太复杂了! (2014/09/19 08:27)
加载中
返回顶部
顶部