建议你看看EJB-QL方面的资料,《EJB编程指南》有较详尽的介绍。
以下的relationshipfield是o里和p发生关联的字段,不是原始字段,
如在JBulider中就会清楚看到。
1.你把 Customer_Ent AS p 改成 IN(o.relationshipfield) relationtable
2.p.*的字段改成o.relationshipfield.name,o.relationshipfield.address

解决方案 »

  1.   

    另外你可以用值对象来实现返回另一个cmp的field,我就是这么做的.
    代码实例:
     public ValueObjectImpl getDetailValueObject()
      {
        //即你以上的p的Local接口;getCTFaultID()是你建o和p的cmr关系时
        //在o中生成的方法;
        CTFaultIDLocal       ctFault=getCTFaultID();
        CTFaultRepairerLocal ctRepairer=getCTFaultRepairer();
        String defaultStr="";
        String typeName=ctFault==null?defaultStr:ctFault.getCTTypeName();
        String faultName=ctFault==null?defaultStr:ctFault.getFaultName();
        String repairerName=ctRepairer==null?defaultStr:ctRepairer.getName();
        return new VO_CTFaultDetail(getTermid(),getOccurtime(),getFaultID(),getRepairerid(),
                               getRepairedFlag(),getRepairedtime(),getRepairtime(),getTypeID(),
                               typeName,faultName,repairerName);
      }
    你明白没?
      

  2.   

    大虾整个程序,写完好执行SQL输出的还只有一个字段,更不要说是用值对象方法了。
       我在最原始的地方获得他的数据集的类XX。GETCLASS()。GETNAME()
       返回的是一个JAVA。LANG。STRING类型,我想这证明用EJBSELECT方法
       返回值是COLLECTION 他返回的只有一个字段。
    但是我的服务器是WEBLOGIC7。0它支持EJB2。0规范。
    我上BEA的网站上面写现在已经能够实现多字段的查询,返回的类型也可以是
    java.sql.resultset类型。
       但是我调试的时候怎么还是抛异常,说不支持此方法