2017-07-14 32 views
-2

这是我的项目代码,我想将我的数据保存到数据库中。关于将数据保存到grails数据库

def save(){ 
    List<Employee> list = Employee.findAllById(session.getAttribute("empId")) 
    Milestone milestone = new Milestone() 
    milestone.setMilestone_Date(params.milestone_Date) 
    milestone.setMilestone_Name(params.milestone_Name) 
    milestone.setMilestone_Description(params.milestone_Description) 
    milestone.save() 
    EmployeeMilestone employeeMilestone=new EmployeeMilestone() 
    Employee employee = list.get(0) 
    employeeMilestone.setEmployee(employee) 
    employeeMilestone.setMilestone(milestone) 
    employeeMilestone.save() 
    [employeeMilestones:employeeMilestone] 
} 

我收到此错误

错误500:内部服务器错误URI/ProjectTrackerMain /里程碑/保存类java.lang.IndexOutOfBoundsException信息指数:0,大小:0

+0

错误500:内部服务器错误 URI /ProjectTrackerMain /里程碑/保存 类 java.lang.IndexOutOfBoundsException 消息 指数:0,大小:0,这是错误messege – srs

+0

通常情况下,更好地提出问题,而不是只是发布一些代码和错误消息! – Daniel

回答

0

你其实并没有问一个问题,所以这可能有点含糊!

当您尝试从某个位置没有“某物”的位置访问某些东西时,会发生IndexOutOfBoundsException。例如,也许你要求列表中的第十个元素,但只有两个。在你的情况,你问的零(用简单的英语,“第一”)元素上这行代码:

Employee employee = list.get(0) 

想必列表为空。您的错误消息显示“大小:0”。您无法从列表中的第一个元素中获取零个元素,因此这是索引超出界限的异常。

为什么您的清单是0?这是一个不同的问题。您可以尝试打印出

session.getAttribute("empId") 

查看您的员工ID是否符合您的预期。您也可以查看数据库中的数据,以查看您是否真的设法保存员工!无论如何,你没有得到你所期望的数据,然后你正在尝试使用它。

通常,使用调试器来查看元素,或者只是使用“println”来查看值,这对于调试这样的问题很有帮助。这样,您将在第1行找到您的员工列表并非您所期望的,而是在您尝试使用它之后的几行内容中!

+0

Thanks.for重播 – srs