一个初学者的CMP关联问题
xxbb 2004-10-17 11:25:10 最近学到EJB的CMP关联,我就想做一个论坛,我的开发环境是:JBUILDER+WEBLOGIC+MYSQL,topic表和reply表是一对多的关系,关联字段是topic表的topicid和reply表的topicid,我建的两个表如下:
CREATE TABLE `topic` (
`topicid` varchar(50) NOT NULL default '',
`title` varchar(100) NOT NULL default '',
`author` varchar(30) NOT NULL default '',
`point` int(10) unsigned NOT NULL default '0',
`reversion` int(10) unsigned NOT NULL default '0',
`content` varchar(255) NOT NULL default '',
`topictime` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`topicid`),
KEY `index1` (`topicid`)
) TYPE=MyISAM;
CREATE TABLE `reply` (
`replyid` varchar(100) NOT NULL default '',
`author` varchar(30) NOT NULL default '',
`replytime` datetime NOT NULL default '0000-00-00 00:00:00',
`content` varchar(255) NOT NULL default '',
`topicid` varchar(50) NOT NULL default '',
PRIMARY KEY (`replyid`),
KEY `index1` (`topicid`),
KEY `index2` (`replyid`)
) TYPE=MyISAM;
当我回复的时,也就是向reply表插入值时,就会有下面的错误(值也没有插入表中):
javax.ejb.TransactionRolledbackLocalException: EJB Exception:; nested exception is: javax.ejb.EJBExceptio
n: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX
method for the cmp-field may not be called. The cmp-field is read-only.
javax.ejb.EJBException: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the sam
e column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.
at dzsw2005.Reply_wit634__WebLogic_CMP_RDBMS.setTopicid(Reply_wit634__WebLogic_CMP_RDBMS.java:479
)
at dzsw2005.ReplyBean.ejbCreate(ReplyBean.java:19)
at dzsw2005.Reply_wit634__WebLogic_CMP_RDBMS.ejbCreate(Reply_wit634__WebLogic_CMP_RDBMS.java:2045
)
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:324)
at weblogic.ejb20.manager.DBManager.create(DBManager.java:1180)
at weblogic.ejb20.manager.DBManager.localCreate(DBManager.java:1138)
at weblogic.ejb20.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:170)
at dzsw2005.Reply_wit634_LocalHomeImpl.create(Reply_wit634_LocalHomeImpl.java:79)
at dzsw2005.ForumFacadeBean.newreply(ForumFacadeBean.java:82)
at dzsw2005.ForumFacade_xgr9io_EOImpl.newreply(ForumFacade_xgr9io_EOImpl.java:46)
at com.xb.InsertReplyAction.execute(InsertReplyAction.java:31)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996
)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContex
t.java:6452)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
javax.ejb.TransactionRolledbackLocalException: EJB Exception:; nested exception is: javax.ejb.EJBExceptio
n: [EJB:010145]When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX
method for the cmp-field may not be called. The cmp-field is read-only.
at weblogic.ejb20.internal.EJBRuntimeUtils.throwTransactionRolledbackLocal(EJBRuntimeUtils.java:2
47)
at weblogic.ejb20.internal.BaseEJBLocalHome.handleSystemException(BaseEJBLocalHome.java:246)
at weblogic.ejb20.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:181)
at dzsw2005.Reply_wit634_LocalHomeImpl.create(Reply_wit634_LocalHomeImpl.java:79)
at dzsw2005.ForumFacadeBean.newreply(ForumFacadeBean.java:82)
at dzsw2005.ForumFacade_xgr9io_EOImpl.newreply(ForumFacade_xgr9io_EOImpl.java:46)
at com.xb.InsertReplyAction.execute(InsertReplyAction.java:31)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996
)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContex
t.java:6452)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
有没有谁遇见过这样的错误吗/??请大家能教教我!先谢谢你们了!