首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectBox -查询嵌套关系

ObjectBox -查询嵌套关系
EN

Stack Overflow用户
提问于 2020-01-26 03:22:29
回答 1查看 313关注 0票数 2

我有以下Entity

代码语言:javascript
复制
@io.objectbox.annotation.Entity
public class MultiplayerGameEntity extends BaseEntity {

    private int durationInHours;
    private ToMany<MultiplayerPlayerEntity> players;

    public MultiplayerGameEntity() {
    }

    public int getDurationInHours() {
        return durationInHours;
    }

    public void setDurationInHours(int durationInHours) {
        this.durationInHours = durationInHours;
    }

    public ToMany<MultiplayerPlayerEntity> getPlayers() {
        return players;
    }

    public void setPlayers(ToMany<MultiplayerPlayerEntity> players) {
        this.players = players;
    }
}

代码语言:javascript
复制
@io.objectbox.annotation.Entity
public class MultiplayerPlayerEntity extends BaseEntity {

    public ToOne<UserEntity> userEntity;
    public ToMany<MultiplayerRoundEntity> rounds;

    public MultiplayerPlayerEntity() {
    }
}

最后

代码语言:javascript
复制
@io.objectbox.annotation.Entity
public class UserEntity extends BaseEntity {

    private String uniqueId;
    private String displayName;
    private ToMany<UserEntity> friends;

    public UserEntity() {
    }

    public UserEntity(String uniqueId, String displayName) {
        this.uniqueId = uniqueId;
        this.displayName = displayName;
    }

    public String getUniqueId() {
        return uniqueId;
    }

    public void setUniqueId(String uniqueId) {
        this.uniqueId = uniqueId;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public ToMany<UserEntity> getFriends() {
        return friends;
    }

    public void setFriends(ToMany<UserEntity> friends) {
        this.friends = friends;
    }
}

我正在尝试执行搜索,并返回包含给定UserEntity的所有MultiplayerGameEntity

在SQL术语中(因为这是我的大脑的工作方式),我将JOIN MultiplayerGameEntityMultiplayerPlayerEntity,然后MultiplayerPlayerEntityUserEntity

我尝试过使用link()来实现这一点,但是我似乎不知道如何链接第二个关系。

到目前为止..。

代码语言:javascript
复制
            queryBuilder.link(MultiplayerGameEntity_.players);
            queryBuilder.link(MultiplayerPlayerEntity_.userEntity).equal(UserEntity_.uniqueId, uniqueId);
            return queryBuilder.build().find();
        }

但这并不能说明

java.lang.IllegalArgumentException: Relation not part of Entity MultiplayerPlayerEntity (17)

有没有可能做我正在做的事情,或者我需要以某种方式破解它?

EN

回答 1

Stack Overflow用户

发布于 2020-01-27 03:46:54

我想我已经让它工作了,通过将链接链接在一起,这样第二个链接就是前一个链接的结果(实际上是一个diff QueryBuilder)

代码语言:javascript
复制
QueryBuilder<MultiplayerGameEntity> queryBuilder = box.query();
queryBuilder.link(MultiplayerGameEntity_.players).link(MultiplayerPlayerEntity_.userEntity).equal(UserEntity_.uniqueId, uniqueId);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59912658

复制
相关文章

相似问题

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