EJB问题:数据库表中主键是自增1的,实体Bean的Create方法该怎么写?

枫叶会红 2004-07-31 10:01:09
一般容器管理的实体Bean的默认create方法的入口参数是表的主键。如:
public ProductKey ejbCreate(java.lang.Integer product_id)
throws javax.ejb.CreateException {
setProduct_id(product_id);
return null;
}

现在问题是我的主键在数据库表中自增1的,创建bean时会报错说表的主键是自增的。我加了一个不带任何参数的create(同时对应加一个ejbPostCreate)也会报错:
public ProductKey ejbCreate()
throws javax.ejb.CreateException {
return null;
}
请EJB高手指点。
...全文
237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
elabs 2004-08-19
  • 打赏
  • 举报
回复
SequenceGen这个类怎么写的啊,能不能发出来看看啊。
枫叶会红 2004-08-04
  • 打赏
  • 举报
回复
问题已经解决,多谢各位。centgo提醒了我。
public class CabinBean implements EntityBean {

int id ;

public CabinPK ejbCreate() throws Exception {
int _id = (int)SequenceGen.nextVal();
setid(id);
...
}
.
.
.
}

aibren 2004-08-03
  • 打赏
  • 举报
回复
我使用MySql数据库,也有类似问题,不过MySql中带参数的ejbCreate方法不影响,不带参数的ejbCreate方法中把id赋0就可以了,MySql会自动加1。

DB2没有用过,不太了解的说。
brendal 2004-08-03
  • 打赏
  • 举报
回复
把home接口里相应create的改了试试,放弃参数id,把其他参数都加上。
比如表的主键是id自动加1,还有一个name。你在home的create里本来是
create(int id,String name)现在只要写成create(String name)就可以
了。当然,bean里和home里的参数必须一致。
枫叶会红 2004-08-03
  • 打赏
  • 举报
回复
怎么取得序列值?我用数据库db2,我用next val for取系列值报错。好像你的办法要用jdbc访问数据库后才得到系列值。
centgo 2004-08-02
  • 打赏
  • 举报
回复
写一个方法,先取得序列值,然后传给ejbCreate当参数
枫叶会红 2004-08-02
  • 打赏
  • 举报
回复
没有人知道吗?
枫叶会红 2004-07-31
  • 打赏
  • 举报
回复
由于我让db2数据库自己产生主键所以EJBCreate才报错,我就是问怎么改写EJB才使他正常工作。
枫叶会红 2004-07-31
  • 打赏
  • 举报
回复
我用的是db2数据库
yeshucheng 2004-07-31
  • 打赏
  • 举报
回复
如果楼主是用oralce的数据库,它自身就有设置。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧