出现java.lang.IllegalArgumentException: id to load is required for loading的解决方法

Hibernate一对多关系映射
本文探讨使用Hibernate进行一对多关系映射的方法,通过具体示例解析如何在测试项目与测试用例模块间建立关联,并解决加载测试项目ID时可能遇到的异常。

  使用了hibernate进行关系映射的时候,比如有一对多的关系,一个测试项目对应多个测试用例模块,部分的关系映射表:

 

ContractedBlock.gifExpandedBlockStart.gif代码
<many-to-one name="testProject" class="com.eyely.pojos.TestProject">
<column name="f_test_project_id" sql-type="nvarchar2(32)" />
</many-to-one>


<set name="testCaseModules" lazy="true" inverse="false">
<key>
<column name="f_test_project_id" sql-type="nvarchar2(32)" />
</key>
<one-to-many class="com.eyely.pojos.TestCaseModule"/>
</set>

 

相关Java文件:

ContractedBlock.gifExpandedBlockStart.gif代码
// 相关属性
private String name;
private String description;
private TestCaseModule parent;
private TestProject testProject;
/ ** 不属于同一Java文件,为了方便,写在一起了 */
testCaseModule.setDescription(cmd.getParameter(
"description"));
testCaseModule.setName(cmd.getParameter(
"name"));
testCaseModule.setParent((TestCaseModule)session.get(TestCaseModule.
class, cmd.getParameter("parent")));
testCaseModule.setTestProject((TestProject)session.get(TestProject.
class, cmd.getParameter("testProject")));

添加操作:*.jsp

ContractedBlock.gifExpandedBlockStart.gif代码
// 只贴部分代码,代码部分已经封装好,这里只供参考
TestCaseModuleProcessor processor = server.getProcessor(TestCaseModuleProcessor.class);

Command cmd
= new HttpServletCommand(request, response);
//TODO: miss validate.
processor.create(cmd);

如果访问*.jsp文件时,因为进行添加时,首先会先查找关联关系中的测试项目的Id ,获取到之后再进行添加的操作,如果获取不到测试项目的id,那么将会跑出一个异常,如大概是这样的信息:

java.lang.IllegalArgumentException: id to load is required for loading
org.hibernate.event.LoadEvent.<init>(LoadEvent.java:51)
org.hibernate.event.LoadEvent.<init>(LoadEvent.java:33)
org.hibernate.impl.SessionImpl.get(SessionImpl.java:812)
org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
com.zyeeda.projs.cmsz.processors.TestCaseModuleProcessor.create(TestCaseModuleProcessor.java:56)
org.apache.jsp.test_005fcase_005fmodule.create_jsp._jspService(create_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

那么如果要测试你的jsp文件是否正确的话,可以传递一个参数来测试。如在URL传递一个参数来测试:你的JSP页面的路径?testProject=1,这样就不会再
出现
id to load is required for loading
这样的异常了,如果你的jsp或者其他代码出现错误的话,浏览器将会提示其他的错误信息,这时你就可以调试你的代码了

 

 

转载于:https://www.cnblogs.com/azai/archive/2010/07/14/1777438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值