我也是同样的问题:
我有这样一个EJB:
组件接口:UserInfo
实现类:UserInfoBean
主接口:UserInfoHome
我添加了这样一个查询表中所有内容的方法:
public UserInfo findByname(String name) throws FinderException;
在EJB Designer中的该方法的设置窗口中的Query下加上了下面的EJB QL:
select object(u) from UserInfo as object(u)  where u.name=?1
结果,编译是通过了,也发布了,可是在调用该方法的时候出现了下面的错误:
我有这样一个EJB:
组件接口:Bank
实现类:BankBean
主接口:BankHome
我添加了这样一个查询表中所有内容的方法:
public Collection findAllCustomer() throws FinderException;
在EJB Designer中的该方法的设置窗口中的Query下加上了下面的EJB QL:
select object(o) from Bank as o
结果,编译是通过了,也发布了,可是在调用该方法的时候出现了下面的错误:
我有这样一个EJB:
组件接口:Bank
实现类:BankBean
主接口:BankHome
我添加了这样一个查询表中所有内容的方法:
public Collection findAllCustomer() throws FinderException;
在EJB Designer中的该方法的设置窗口中的Query下加上了下面的EJB QL:
select object(o) from Bank as o
结果,编译是通过了,也发布了,可是在调用该方法的时候出现了下面的错误:
Unknown query :public abstract larchfirstejb2.UserInfo larchfirstejb2.UserInfoHome.fingByname(java.lang.string) throws javax.ejb.Finderexception;
还有,如果我不使用ejb designer而直接在UserInfoHome 中添加下面内容:
public UserInfo findByname(String name) throws FinderException;
这样是可以使用的,并却成功了。
帮助我!

解决方案 »

  1.   

    你试图在包装Bank bean的session bean ----TestBank中调用home接口的查询方法,然后,直接将查询结果返回到客户端,但因为你的Bank bean实现的是local接口,不能被传到客户端,所以报了上面的错误.
    解决方案很简单:
    1.把你的Bank bean在session bean中组装成一般的javabean传到客户端
    2.为你的Bank bean加上remote接口,然后在finder方法的部署操作符中指明返回的是remote接口
      

  2.   

    我还是不明白,虽然我的Bank Bean(CMP)是local的,但我是通过remote型的SessionBean来访问的,而我只是把查询的结果装载到Collection中然后再传到客户端,这样不行吗?
      

  3.   

    而我只是把查询的结果装载到Collection中然后再传到客户端
    ===========================================================
    不可意,你传递的是对local的引用啊,难道你忘了?
      

  4.   

    我明白了,也改好了!
    to学习C++喽:V0(值对象)??是什么东东,能解释一下吗?
      

  5.   

    Value Object,EJB的设计模式之一,就是偶上面提到的封装Entity Bean信息的JavaBean,hoho