Topic: 关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页)

  Print this page

1.关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) Copy to clipboard
Posted by: nothing
Posted on: 2003-10-20 08:50

问题来了~~

在ProductBean中,ejbCreate()方法 struggle 的代码是
public ProductPK ejbCreate(String productID, String name, String description, double basePrice) throws CreateException{
System.out.println("ejbCreate() called");

setProductId(productID);
setName(name);
setDescription(description);
setBasePrice(basePrice);

return new ProductPK(productID);
}


ME2附的代码(下载得来)是:
public String ejbCreate(String productID, String name, String description, double basePrice) {

System.out.println("ejbCreate() called");

setProductID(productID);

setName(name);

setDescription(description);

setBasePrice(basePrice);

return productID;

}


如用struggle的,就会ejbc编译不过去:

ERROR: Error from ejbc: In EJB Product, the ejbCreate method: ejbCreate(java.lang.String,
java.lang.String,java.lang.String,double) must return the primary key type.

===>另: 而<< Mastering EJB 2 >>(电子版的189~191页)中写的更强

前面详述是写成:

public String ejbCreate(ProductPK productID, String name,
String description, double basePrice)
throws CreateException {
System.out.println("ejbCreate() called");
setProductID(productID);
setName(name);
setDescription(description);
setBasePrice(basePrice);
return new ProductPK(productID);
}


而后除掉不必要的东东(注释)时,就写成了


public String ejbCreate(String productID, String name,
String description, double basePrice) {
setProductID(productID);
setName(name);
setDescription(description);
setBasePrice(basePrice);
return productID;
}



SmileSmileSmile环境weblogic 8.1 sp1

SmileSmileSmile偶想知道"标记为红色的部分"这么写有什么差别...TongueTongue

2.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: nothing] Copy to clipboard
Posted by: jameszhang
Posted on: 2003-10-20 09:10

是指那个有没有 throws CreateException 的差别吗?

3.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: jameszhang] Copy to clipboard
Posted by: nothing
Posted on: 2003-10-20 09:21

NO-NO-NO,指的是我标为红色的部分....就是ejbCreate()方法返回类型的问题.

4.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: nothing] Copy to clipboard
Posted by: ajinjin
Posted on: 2003-10-20 09:54

问题是你的主键类是什么呢

5.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: ajinjin] Copy to clipboard
Posted by: nothing
Posted on: 2003-10-20 10:54

主键类 ProductPK:


package examples;

import java.io.Serializable;

/**

* Primary Key class for our 'Product' Container-Managed

* Entity Bean

*/

public class ProductPK implements java.io.Serializable {

  /*

   * Note that the primary key fields must be a

   * subset of the the container-managed Bean fields.

   * The fields we are marking as container-managed in

   * our Bean are productID, name, desc, and basePrice.

   * Therefore our PK fields need to be from that set.

  */

  public String productID;

  public ProductPK(String productID) {

    this.productID = productID;

  }

  public ProductPK() {

  }

  public String toString() {

    return productID.toString();

  }

  public int hashCode()

  {

   return productID.hashCode();

  }

  public boolean equals(Object prod)

  {

   return ((ProductPK)prod).productID.equals(productID);

  }

}


6.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: nothing] Copy to clipboard
Posted by: jameszhang
Posted on: 2003-10-21 08:49

不就是返回主键吗,GG?

7.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: nothing] Copy to clipboard
Posted by: mefaint
Posted on: 2003-10-21 10:30

看了。。好晕阿。。。
有什么问题么?那两个返回的主键类型不一样啊,有什么问题么?

8.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: nothing] Copy to clipboard
Posted by: nothing
Posted on: 2003-10-21 10:54

呵呵,我的意思是说struggle的代码,返回的是ProductPK
而书上的返回的是String,
小弟刚学这个,不太懂区别在哪里?

9.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: nothing] Copy to clipboard
Posted by: mefaint
Posted on: 2003-10-21 11:08

哦,struggle的代码我没有看,不过按照这个命名法则,
ProductPK是一个自定义的class,包含了Product的一些属性(
换句话说,这个类里面封装了数据库的若干字段,作为主键)。
而书上为了简单,自然是用一个String类作为主键咯。

String是一个Class,ProductPK也是一个Class,两个没有区别,完全取决于
你的应用,取决于你的数据表定义。
Just do what you need....

看一下其他的方法,findby...,其中的findbyprimarykey也必然是返回一个
ProductPK。

P.S,EntityBean目前应用是在是。。。。。
推荐你还是学习Hibernate或者JDO吧。那些更加实用点
EJB我看也就SessionBean和md-b还有点好用

10.Re:关于CMP ...<< Mastering EJB 2 >>(电子版的189~191页) [Re: mefaint] Copy to clipboard
Posted by: nothing
Posted on: 2003-10-21 14:09

呵呵,应用现在谈不上,可是总得明白JEB是啥东西吧...

谢谢你! 真诚的.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923