在EJB中持久保存子实体的问题

时间:2011-06-08 08:49:41

标签: java ejb-3.0

我的名为Stock的实体bean包含

@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name="stockid")
private List<StockSize> stockSizeList = new ArrayList<StockSize>();

我的StockSize实体bean包含来自Stock

的一个字段stockid

以下是设置股票实体价值的代码

Stock stock = new Stock();
    stock.setDesignCode("123design");
                stock.setLotNo("123lot");
                stock.setCreatedByUserId(getIBusinessDelegateOperationSessionContext().getUserId());
                stock.setCreatedDate(new Date());
                stock.setIsSystemRecord(StaticTableConstants.NOT_ISSYSTEMRECORD);
                stock.setLastModifiedDate(new Date());
                stock.setLastModifiedByUserId(getIBusinessDelegateOperationSessionContext().getUserId());


    stock.setStockSizeList(listStockSize != null ? listStockSize : new ArrayList<StockSize>());

它给出了一个错误,因为当容器持有StockSize

时它无法获得stockid

那么在EJB3.0中是否存在任何后持久类型的东西,即StockSize在持有股票后仍然存在?

或只有一个解决方案,我必须将两个实体分开。

1 个答案:

答案 0 :(得分:0)

因为我不知道你得到了什么错误或你的代码如何持续我只能猜测(提示 *提示*)

但处理Y-To-X-Relationships时的一个共同点是父(这里“Stock”)不能在其子节点(此处为“StockSize”)之前保留。原因如果stockSize与库存的x-To-Y关系比你必须先保留空对象并插入关系并更新。

如果这不能解决您的问题,请发布您的堆栈跟踪。