1、你在ejbPostCreate()中set那个不是主键字段的值呀;
解决方案 »
- ext的ajax请求问题
- SSH框架开发DEMO
- j2ee
- HIBERNATE ORACLE SQL语句问题
- 接着提问hibernate
- Tomcat5 最多能支持多少个站点??????急,在线等
- 求jboss的配置和第一个hello world的ejb程序!
- 关于Spring切换数据库的时机
- eclips+tomcat编写Jsp文件的时候出现这样的错误,请大家帮忙看看啊!!谢谢
- jbuilder9 与 websphere5.0 如何整合?请各位高手不啬指点一二 , 急急急 , 在线等
- 如何在sessionbean中调用entitybean的方法?
- 为什么我刚安装的Websphere5.0,启动时就报没有安装JMS Server?
应改为:SELECT OBJECT(a)FROM SignonBean AS a WHERE a.password = ?1
就是在=号前后加了空格,你仔细的观察一下。
我的表名叫signon,两个字段:username和password,都是String类型,都是NOT NULL
1. 如果在ejbPostCreate()中set那个不是主键字段的值,那我从哪里传参数进去呀?都只有一个参数的呀,就是username。能不能给我个例子?万分感激
2.那个空格我加了,可是还是错误:
"zkytest.ejbgrpx": ERROR: Error from ejbc: Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error was:
"zkytest.ejbgrpx":
"zkytest.ejbgrpx": weblogic.ejb20.cmp.rdbms.finders.IllegalExpressionException:
"zkytest.ejbgrpx": While trying to process Finder
"zkytest.ejbgrpx": Method Name: findByPassword
"zkytest.ejbgrpx": Parameter Types: (java.lang.String)
"zkytest.ejbgrpx": EJB Query: SELECT OBJECT(a)FROM SignonBean AS a WHERE a.password= ?1
"zkytest.ejbgrpx": )
"zkytest.ejbgrpx": Could not parse EJB QL expression: SELECT OBJECT(a)FROM SignonBean AS a WHERE a.password= ?1
"zkytest.ejbgrpx": ERROR: ejbc found errors
好象一样的错误?
请再指教!谢谢!
邮箱:[email protected]
1. 我用jbuilder8创建了一个CMP的实体bean,但是在Home接口中只有两个方法:
public interface SignonHome extends javax.ejb.EJBLocalHome {
public Signon create(String username) throws CreateException;
public Signon findByPrimaryKey(String username) throws FinderException;
}
我想调用create方法,应该是可以插入一条记录的吧?但是我的表有两个字段,而且都是NOT NULL,而这里的create方法只包含了一个主键的参数(username),我调用时,当然只能传一个参数进去,这样,就出错了,说不能插入空值。请教,如何解决?这个问题必须手动修改,就是说,你必须自己修改Home和RemoteHome这2个方法,同时需要注意的事,在Bean文件中的PostCreate方法的参数必须要和上面的Create一致,因此需要有4个修改的地方
"zkytest.ejbgrpx":
"zkytest.ejbgrpx": weblogic.ejb20.cmp.rdbms.finders.IllegalExpressionException:
"zkytest.ejbgrpx": While trying to process Finder
"zkytest.ejbgrpx": Method Name: findByPassword
"zkytest.ejbgrpx": Parameter Types: (java.lang.String)
"zkytest.ejbgrpx": EJB Query: SELECT OBJECT(a)FROM SignonBean AS a WHERE a.password=?1
"zkytest.ejbgrpx": )
"zkytest.ejbgrpx": Could not parse EJB QL expression: SELECT OBJECT(a)FROM SignonBean AS a WHERE a.password=?1
"zkytest.ejbgrpx": ERROR: ejbc found errors
请问是什么原因?
这个问题有2种可能的情况(其中也是JB的BUG)
情况1:如果你在同一个反复多次添加后删除一个CMP会造成weblogic-cmp-rdbms-jar.xml中的数据丢失,这种情况下只有手动才能恢复,要么重做情况2:我怀疑你在输入的时候括号用了中文方式输入,全部必须是英文方式下输入的,你再试试看。还有这里一句:FROM SignonBean AS a 要注意,这个SignonBean不是你数据库中表项的名字,而是应该是你的CMP的名字,必须注意大小写,完全对应
非常感激你,第一个问题如你所述,已经解决了。
第二个问题我先按你说的情况二重新写了一遍,好象确实是我把中文括号误用了。但是又出现如下错误:
"zkytest.ejbgrpx": ERROR: Error from ejbc: Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error was:
"zkytest.ejbgrpx":
"zkytest.ejbgrpx": weblogic.ejb20.cmp.rdbms.finders.IllegalExpressionException:
"zkytest.ejbgrpx": While trying to process Finder
"zkytest.ejbgrpx": Method Name: findByPassword
"zkytest.ejbgrpx": Parameter Types: (java.lang.String)
"zkytest.ejbgrpx": EJB Query: SELECT OBJECT(a) FROM SignonBean AS a WHERE a.password=?1
"zkytest.ejbgrpx": )
"zkytest.ejbgrpx": Invalid Expression: Could not find an entity EJB for abstract schema name, 'SignonBean', which is declared in a range variable declaration. Check to be sure that an EJB is defined in the ejb-jar.xml descriptor with this abstract schema name.
"zkytest.ejbgrpx": ERROR: ejbc found errors好象是说找不到实体bean了,我不太明白abstract schema 的含义。请给我解释一下吧!我的ejb-jar.xml文件如下:sessionbean1是我的远程sessionbean的名称
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
<session>
<display-name>sessionbean1</display-name>
<ejb-name>sessionbean1</ejb-name>
<home>ejbtest.sessionbean1Home</home>
<remote>ejbtest.sessionbean1</remote>
<ejb-class>ejbtest.sessionbean1Bean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<description />
<ejb-ref-name>cmp1</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>ejbtest.SignonHome</local-home>
<local>ejbtest.Signon</local>
<ejb-link>Signon</ejb-link>
</ejb-local-ref>
</session>
<entity>
<display-name>Signon</display-name>
<ejb-name>Signon</ejb-name>
<local-home>ejbtest.SignonHome</local-home>
<local>ejbtest.Signon</local>
<ejb-class>ejbtest.SignonBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Signon</abstract-schema-name>
<cmp-field>
<field-name>username</field-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
</cmp-field>
<primkey-field>username</primkey-field>
<query>
<query-method>
<method-name>findByPassword</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>SELECT OBJECT(a) FROM SignonBean AS a WHERE a.password=?1</ejb-ql>
</query>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>sessionbean1</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>Signon</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>不知道还有方法解决吗?谢谢!
另外,即便没有解决,两天之内我会加分给你。真的谢谢!