首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jodd DbOomQuery提示与集合

Jodd DbOomQuery提示与集合
EN

Stack Overflow用户
提问于 2015-09-18 19:34:57
回答 1查看 66关注 0票数 1

我正在使用Jodd DbOom来管理我的查询,这真的很棒。但现在我正面临着一种无证件的情况。

我有一个返回对象列表(A)的查询,每个A都有一个对象列表(B),每个B都与其他对象(C、D、E等)连接。问题是类JoinHintResolver没有在B对象上设置值C、D、E。B对象在A对象上被正确设置。

下面是再现错误的测试方法。其他使用的类(GirlBadBoy)来自Jodd包。

代码语言:javascript
复制
public void testHintsList() {
    Room room = new Room();
    Girl girl = new Girl();
    BadBoy badBoy = new BadBoy();
    Object[] data = new Object[] { room, badBoy, girl };

    JoinHintResolver jhr = new JoinHintResolver();
    Object[] result = jhr.join(data, "room, room.boys, room.boys.girl");
    assertEquals(1, result.length);
    assertTrue(result[0] instanceof Room);
    room = (Room) result[0];
    badBoy = room.getBoys().get(0);
    assertEquals(girl, badBoy.girl);
}

public class Room {
    private Long id;
    private List<BadBoy> boys;

    public Room() {
    }

    public Long getId() {
    return id;
    }

    public void setId(Long id) {
    this.id = id;
    }

    public List<BadBoy> getBoys() {
    return boys;
    }

    public void setBoys(List<BadBoy> boys) {
    this.boys = boys;
    }
}

文档中没有这样的例子,谷歌也没有。所以我不知道我是做错了什么,还是乔德没有准备好面对这种情况。

我如何设置提示以便Jodd能够正确地设置这些值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-20 19:32:58

因此,这里的问题是,您的Room中有一个Room的集合。还有提示:

代码语言:javascript
复制
room.boys.girl

建议它们向集合中注入Girl实例。用java语言来说,这相当于:

代码语言:javascript
复制
getRoom().getBoys().setGirl(girl);

显然,由于getBoys()返回一个List,所以我们不能设置girl属性。

要测试我说过的内容,请使用以下提示:

代码语言:javascript
复制
room.boys[0].girl

这将将girl实例注入列表的第一个元素。或者,您可以将Room更改为只有一个Boy属性,而不是列表,而原始提示将有效。

我希望这对你有用:)

(见测试)

编辑

这支中,我有一些看起来像修复程序的东西:)现在您可以编写这样的东西:

代码语言:javascript
复制
select $C{room.*}, $C{room.boys:boy.*}, $C{room.boys.girl:girl.*}
    from $T{Room room} join $T{Boy4 boy} on $room.id=$boy.roomId 
    join $T{Girl4 girl} on $boy.id=$girl.boyId 
    order by $room.id, $boy.id

您可以使用以下模型:

RoomBoy列表。每个Boy都分配了一个Girl。当entityAware打开时,这应该可以工作。也许你有时间测试这个分支?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32659753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档