急! 在线等,hibernate问题,50分送上! 不拿白不拿啊

win720520 2009-05-14 10:12:29
for (Iterator iter = forms.iterator(); iter.hasNext(); ) {
Workform form = (Workform)iter.next();
System.out.println("form============"+form);
session.save(form);
Set refs = form.getFields(); // 是Workform.java的pojo类
System.out.println("refs============"+refs);
if (refs == null&refs.isEmpty())
{

这里我打印出来的
form============com.cyt.oa.workform.model.Workform@7ca9bd[id=<null>]
refs============null
java.lang.NullPointerException

出了个异常
为什么form 后面的 Id 会是null呢 refs的值怎么取不到?


workform.hbm.xml 里面是这么写的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.cyt.oa.workform.model">
<class name="Workform" table="workform">
<id column="id" name="id" type="java.lang.Long">
<generator class="native"/>
</id>
<property column="confine" name="confine" type="java.lang.Long"/>
<property column="name" name="name" type="string"/>
<property column="version" name="version" type="integer"/>
<property column="template" name="template" type="string"/>
<property column="title" name="title" type="string"/>
<property column="usable" name="usable" type="boolean"/>
<property column="isjunk" name="isjunk" type="boolean"/>
<property column="markfld" name="markfld" type="string"/>
<property column="cabeditflds" name="cabeditflds" type="string"/>
<property column="allflds" name="allflds" type="string"/>
<property column="formulas" name="formulas" type="string"/>
<property column="autowater" name="autoWater" type="string"/>
<property column="timemark" name="timestamp" type="java.util.Date"/>
<set name="fields" table="reference" inverse="true" lazy="true">
<key column="workformid"/>
<one-to-many class="com.cyt.oa.workform.model.Reference"/>
</set>
</class>
</hibernate-mapping>
...全文
219 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangaiwen 2010-06-08
  • 打赏
  • 举报
回复
learning
risingsun_xi 2009-05-16
  • 打赏
  • 举报
回复
up
MDMLXJ 2009-05-14
  • 打赏
  • 举报
回复
真不会,一起等待!
win720520 2009-05-14
  • 打赏
  • 举报
回复
com.gardenia.deploy.DynamicDeployee.insertWorkform(DynamicDeployee.java:81)//DynamicDeployee.java:81行是什么东西啊
这里就是 if (refs == null&refs.isEmpty()) 这一行啊


Set refs = form.getFields(); 这里取的值


public Set getFields()
{
return fields;
}

public void setFields(Set fields)
{
this.fields = fields;
}


这里去设置的

qsrock 2009-05-14
  • 打赏
  • 举报
回复
if (refs == null&refs.isEmpty())
你这个判断也有问题!如果refs 为null的话旧出异常了
qsrock 2009-05-14
  • 打赏
  • 举报
回复
forms=============[com.cyt.oa.workform.model.Workform@1f75442[id= <null>]]
form============com.cyt.oa.workform.model.Workform@1f75442[id= <null>]
refs============null
java.lang.NullPointerException
at com.gardenia.deploy.DynamicDeployee.insertWorkform(DynamicDeployee.java:81)//DynamicDeployee.java:81行是什么东西啊
at com.gardenia.deploy.DynamicDeployee.deploy(DynamicDeployee.java:42)


你有没有添加这个代码(session.flush(); ),如果添加了的话,id是可以拿到的,你可以打印出来!
Set refs = form.getFields();取的是什么值??这个值你之前设置过没有的呢??怀疑这里才是问题所在!
win720520 2009-05-14
  • 打赏
  • 举报
回复
forms=============[com.cyt.oa.workform.model.Workform@1f75442[id=<null>]]
form============com.cyt.oa.workform.model.Workform@1f75442[id=<null>]
refs============null
java.lang.NullPointerException
at com.gardenia.deploy.DynamicDeployee.insertWorkform(DynamicDeployee.java:81)
at com.gardenia.deploy.DynamicDeployee.deploy(DynamicDeployee.java:42)
at com.gardenia.webservice.UploadClobHelper.uploadClob(UploadClobHelper.java:45)
at com.gardenia.webservice.CFormServiceSoapBindingImpl.uploadClob(CFormServiceSoapBindingImpl.java:307)
at com.gardenia.webservice.CFormServiceSoapBindingImpl.issueCustomForm(CFormServiceSoapBindingImpl.java:130)
at com.gardenia.webservice.CFormServiceSoapBindingSkeleton.issueCustomForm(CFormServiceSoapBindingSkeleton.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
qsrock 2009-05-14
  • 打赏
  • 举报
回复
应该有异常吧,异常的详细信息呢?贴出来看看!

建议你调debug,很容易就可以找出哪里出null异常了!
win720520 2009-05-14
  • 打赏
  • 举报
回复
既然拿到了 为什么会是个Null, 还有在页面刷新的时候 它不是自动刷新跳转的,因为他出窗口后就没了反映了,必须我去刷新下重新打开后 正常
qsrock 2009-05-14
  • 打赏
  • 举报
回复
应该拿到id了吧!你说的如果我刷新页面后,得到得结果是正确的 ,可是在后台就报了这个空指针错, 另外页面上
也出了个窗口“org.hibernate.sessionException session was already closed
已经是另外的问题了,
session was already closed 说明你把seesion关闭后又调用了session!
win720520 2009-05-14
  • 打赏
  • 举报
回复
这个是那个页面的 js


function issueCForm(){
var ocx=getNestedOCX();
var issued=ocx.issued;
var modified=ocx.Modified;
var changed=ocx.edited;

var saveResult=true;
var issueResult=false;
try{
if(changed) saveResult=(ocx.saveTable()==0); //如果需要,则保存表单
if(saveResult) issueResult=(ocx.issueTable()==0); //保存成功,继续发布表单

}catch(e){

alert(e.message); // 这里 出的那个hibernate异常 这里不是根本的原因,主要还是那个空指针
return false;
}
if((changed && saveResult) || (issueResult && !issued)){

if(issueResult && !issued){

//页面跳转

window.opener.allforms.submit();
window.alert("表单启用成功!"); //modify by
self.close();

}
}
return true;
}
}
win720520 2009-05-14
  • 打赏
  • 举报
回复
如果正常的话 页面弹出的窗口应该是 “表单启用成功!”
win720520 2009-05-14
  • 打赏
  • 举报
回复
还是一样的, 其实 数据已经保存进去了,我每次运行一次, 在数据库中就会多一行记录 ,其实它运行的结果
已经在数据里了,如果我刷新页面后,得到得结果是正确的 ,可是在后台就报了这个空指针错, 另外页面上
也出了个窗口“org.hibernate.sessionException session was already closed”
qsrock 2009-05-14
  • 打赏
  • 举报
回复
for (Iterator iter = forms.iterator(); iter.hasNext(); ) {
Workform form = (Workform)iter.next();
System.out.println("form============"+form);
session.save(form);
session.flush();
Set refs = form.getFields(); // 是Workform.java的pojo类
System.out.println("refs============"+refs);
if (refs == null&refs.isEmpty())
{
qsrock 2009-05-14
  • 打赏
  • 举报
回复
添加一行看看!
for (Iterator iter = forms.iterator(); iter.hasNext(); ) {
Workform form = (Workform)iter.next();
System.out.println("form============"+form);
session.save(form);
session.flush();
Set refs = form.getFields(); // 是Workform.java的pojo类
System.out.println("refs============"+refs);
if (refs == null&refs.isEmpty())
{
win720520 2009-05-14
  • 打赏
  • 举报
回复
怎么去搜索 代码是如何实现的
qsrock 2009-05-14
  • 打赏
  • 举报
回复
3L的写法还是和你一样的当然不行啦!
你用的id是自动增长的吧!
[color=#FF0000]当数据刚保存的时候,你不搜索数据库或返回ID,就直接取值,当然取不到值啦
![/color]
还有一个就是用save()方法的时候,它不会立刻保存的数据库的,除非你 flush()
win720520 2009-05-14
  • 打赏
  • 举报
回复
3L 我试了 不行 还是null
win720520 2009-05-14
  • 打赏
  • 举报
回复
我的 ID 是自动增长的
guohan1129 2009-05-14
  • 打赏
  • 举报
回复
不会 哈哈
加载更多回复(7)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧