请教cmp关联的问题,1:1,1:n多关系

03-09-09 jayqian
我用jbuilder9开发,从datasource生成两个cmp,person个人信息,work工作经历
person:
id
name
englishname

work:
pid
compony
salary

pid对应person的id,是1:n关系
自动生成后,在person建了一个relation,key也指定好了,现在find没问题,
我想请教该怎么create,我们是参考petstore做的,基本上是在person的create里只setId,在postCreate里该怎么做呢,高手指教,请详细一点谢谢

jayqian
2003-09-09 15:09
补充一下:
1.对表结构设计上不用讨论,我只是举个列子.
2.work自己带create(pid) setPid(pid)的不用说了,能实现.
但我在petstore里看到是没有的,就是说create()是空的
在person的postcreate里先create() work然后setWorks(),但是没有主建的work create()就出错啊,不知道petstore里是怎么实现的

banq
2003-09-09 16:15
work当然需要 create(主键) 这样来创建,

语句应该这样:
WorkLocal workLocal = workHome.create(String pid);
personLocal.getWorks.add(workLocal);

最后一句是设立一对多关系的。

如果是一对一关系,最后一句应该是:
personLocal.setWork(workLocal);

jayqian
2003-09-09 17:23
谢谢,您说的add我马上试试
请看一下petstore的custom ejb 他里面的address等都是没有主建的create
如果在employee cmp的postCreate用
work = workhome.create(pid);
setwork(work);
会出错
而且我想既然create的work有pid,就已经和employee关联上了,根本不用再
setwork,我试过,实际可行,但为什么还要set呢,petstore里create的时候确实没有带主建,而是靠set关联上的,我那么理解的
研究过petstore的都来讲讲啊