我使用jsp+hibernate+struts开发一个网站,用的MyEclips开发,服务器用的tomcat,数据库是sqlserver有下面的一个问题: 我的注册功能会把用户的简历信息填入简历表,同时在数据库中触发一个触发器将自动生成的简历号填到用户表中.可是现在用户提交注册后,数据库里简历表和用户表都已经有了相应的内容(简历号也填到了用户表中).可是用这个用户名登录时总是抛出异常,说找不到简历号(简历号是用户表里引用简历表的一个外键).只能是重启tomcat服务器后才能登录.这是怎么回事呢?该怎么解决呢? 
我怀疑是tomcat没有及时刷新由数据库触发器自动更改的表的内容,可是不太清楚到底怎么回事,我该怎么解决这个问题,希望各位大侠多指点!
问题补充:
数据库里的各表关系已经建立了,数据库的存储肯定没问题,以为我从企业管理器可以看到加进去的数据 

解决方案 »

  1.   

    我觉得和tomcat应该没什么关系把可能是你数据库的查询有问题
      

  2.   

    如果你认为是tomcat的问题
    那么你可以这样试试
    把tomcat目录下的work目录里内容清空
    要是还不能解决的话就不是tomcat的问题了
      

  3.   

    去看看你的触发器是怎么写的,当你插入数据库成功的时候,要及时的commit才行嘛!
    还有一点,你的简历号都是随机生成的对不?
    用它作你的另一个表的外键行吗?
      

  4.   

    小弟是初学者,是做一个课程设计,最近两个礼拜才接触的,框架内部的一些机制不是很明白.答:"你可以在注册完时,立即去查询数据库里有没有简历编号,如果没有则注册时没有提交"
      我注册完后就从企业管理器看过数据库,数据已经写进去了,而且用户表里的简历号也已经有了,课登录就会提示书找不到简历号.
      而且,只要把tomcat服务器重启一下就可以用这个账号登录了
      

  5.   

    应该不是tomcat的问题
    你去看看数据库吧
      

  6.   

    应该就是这个问题,由触发器更新插入的ID没有被更新,只是由登录代码插入的信息更新了.重启tomcat后数据就同步了.
    这个问题能解决吗?
    我也考虑不用触发器,可是我向resume表里插入数据后怎么取回对应的ID(自动增长的)呢?
      

  7.   

    登录代码太长太乱了,怕大家看了烦.下面是简化的登录代码:String username=PerLoginForm.getUsername().trim();//取得用户表ID
    String password=PerLoginForm.getPassword().trim();//取得密码
    …………
    PersonDAO dao=new PersonDAO();       //hibernate反向工程的映射类
    Person person=dao.findById(username);
    Long resumeid=person.getResume().getResumeId();List<ViewApplyjob> applys =(List<ViewApplyjob>)dao.findByProperty("id.resumeId", resumeid);//ViewApplyjob是一个视图的映射
    HttpSession session = request.getSession();
    session.setAttribute("applys",applys);//jsp页面中要取出这个结果集
      

  8.   

    问题最终还是没有解决,感觉是Tomcat与数据库的连接和更新的问题,不过这只是个课程设计,最初是数据库设计问题,后来不想再改动数据库了,所以用触发器做了个折中的解决办法.虽然没得到想要的答案,不过大家辛苦了,谢各位了……