我的java概念有什么问题?

时间:2013-12-15 08:06:29

标签: java hibernate axis2

这是我的代码(由axis2创建的web服务,由eclipse jboss工具生成)

public PlayerCalendar[] getCalendarByUseridArr(String userid){
    au.backpack.Calendar cal=new au.backpack.Calendar();
    PlayerCalendar[] arr=new PlayerCalendar[cal.getCalendarByUserid(userid).length];
    arr=cal.getCalendarByUserid(userid);//get the hibernate dao result
    for(int i=0;i<arr.length;i++){
            //i want to create new Url value
        String url=arr[i].getUrl()+"?eventid="+arr[i].getEventid();
        arr[i].setUrl(url);
    }
    return arr;
}

这是我的dao功能

public  PlayerCalendar[] getCalendarByUserid(String userid){
    Session session = HibernateUtil.currentSession();
    Transaction tx = null;
    tx = session.beginTransaction();
    List<PlayerCalendar> list =session.createQuery("from PlayerCalendar where userid='"+userid+"'").list();
    int listlen=1;
    if(list.size()>1)
        listlen=list.size();
    PlayerCalendar [] sr = new PlayerCalendar[listlen];
    return list.toArray(sr);
}

它可以在我的xml Web服务页面(Axis2)中运行,

网址值如:

  

user_calendarEvent.jsp?的EventID = 1

但是当我刷新页面大约5~9次

它开始附加更多“?eventid = 1”:

  

user_calendarEvent.jsp?的EventID = 1?的EventID = 1

并且在开始追加之后, 每次刷新它,它总是附加“eventid = 1”

  

user_calendarEvent.jsp?的EventID = 1?的EventID = 1?的EventID = 1

但真正的价值只是

  

user_calendarEvent.jsp?的EventID = 1

哪里错了?

感谢〜

1 个答案:

答案 0 :(得分:1)

您没有关闭Hibernate会话,因此您的PlayerCalendar实例仍然附加到会话,然后通过调用

修改其url属性
String url=arr[i].getUrl()+"?eventid="+arr[i].getEventid();
arr[i].setUrl(url);

所以hibernate在每个请求上更新实体(并将?eventid=...连接到它)。

因此,拥有多个?eventId=... s。

的网址是正常的