play morphia通过ObjectId查找Reference对象

时间:2015-05-10 13:10:19

标签: java playframework-2.0 morphia

我有以下课程" Ground":

@Entity("grounds")
public class Ground {

@Id
public String id;

public String name;
public String password;

@Reference
List<User> members = new ArrayList<User>();

我创建了一个新的Ground并添加了一个成员@Reference。当我试图通过成员@Id找到地面时,我只得到一个空查询。这是我的代码:

    Datastore ds = Database.getDatastore();
    User member = ds.get(User.class, new ObjectId(id));

    Query<Ground> query = ds.createQuery(Ground.class).disableValidation()
            .filter("members", member);

1 个答案:

答案 0 :(得分:0)

  1. 虽然我没有看到User:您是否也将@Id定义为String?因为在您的查询中,您使用的是ObjectId
  2. 我认为您需要使用密钥查询引用,例如

    Query<Ground> query = ds.createQuery(Ground.class).disableValidation()
        .field("members").hasThisElement(ds.getKey(member));