0

我有一个 Office 对象和一个设备对象。一个办公室有一个设备,一个设备属于一个办公室。因此,获取 Office 对象应填充 Office.Device 引用,并且 Device 对象应具有其所属的 Office 对象。我想这是一个循环引用。

我想在 iBATIS 中执行此操作,但我不知道如何正确执行此操作。

这几乎就像我需要一个 resultMap ,我可以“将此属性设置为由刚刚调用我的 resultMap 创建的对象”。而不是用另一个查询(N+1,我知道)填充这个属性(对象),或者使用结果集和这个另一个 resultMap 填充这个属性。

我不介意为这种情况创建另一个 resultMap。

另一个完全可以接受的答案是 iBATIS 没有这样做,因为您的架构有缺陷。如果是这种情况,请给我一些其他选择。

4

2 回答 2

0

http://www.javalobby.org/java/forums/t75161.html在底部附近有一个示例,其中包含另一个 resultMap 的结果作为属性。我从来没有这样做过,但从他的例子来看,它似乎会起作用。您可能会有 4 个 sql 查询:1 个用于办公室,一个用于拉取关联设备的相关查询,然后是一个用于拉取关联办公室的相应设备查询。希望这可以帮助。

于 2010-02-25T23:41:26.873 回答
0

如果设备只需要对它所在的办公室进行循环引用,并且不存在办公室可以包含设备并且该设备可以包含更多办公室列表的情况。

然后一个 RowHandler 可能会完成这项工作。以正常方式通过SQL map查询office和device,满足office到设备的关系。然后在与查询调用关联的 RowhHandler 中填充设备成员内包含 office 对象的引用,从而进行循环引用并且不需要额外的查询。

于 2010-03-04T07:39:37.690 回答