Java 对象中列表中的高级查询mongodb morphia列表

Java 对象中列表中的高级查询mongodb morphia列表,java,mongodb,morphia,Java,Mongodb,Morphia,如何获取对象的列表,其中借贷者的tla(三个字母的缩写)等于借贷者列表中提供的tla(最好是最后一个戳记) 我有以下课程: 对象: @Id private String objectCode; @Embedded private List<ActionStamp> borrowingHistory; ... 现在我想找到所有对象,其中最后一个ActionStamp中借款人的tla中的1个等于给定的tla 到目前为止,我有: // Select only Object with t

如何获取
对象的列表
,其中
借贷者的
tla
(三个字母的缩写)等于
借贷者列表中
提供的tla
(最好是最后一个戳记)

我有以下课程:

对象:

@Id
private String objectCode;
@Embedded
private List<ActionStamp> borrowingHistory;
...

现在我想找到所有
对象
,其中最后一个
ActionStamp
借款人
tla
中的1个等于给定的tla

到目前为止,我有:

// Select only Object with type Object.class
Query<Object> q = ds.createQuery(Object.class);
// Query the Object only that have a borrowingHistory
q.field("borrowingHistory").exists();
// Query the Object only that have borrowers in the borrowingHistory
q.field("borrowingHistory.borrowers").exists();

// This is where I'm stuck
q.field("borrowingHistory.borrowers.tla").hasThisOne(providedTla);

我应该如何解决这个问题?

您能发布一个示例文档吗?我不知道morphia如何处理引用,但mongoDB中的点表示法只能用于嵌入对象,不能用于引用。@joao您所说的示例文档是什么意思?mongoDB的样本?mongoDB中的引用被存储为:
responsible(DBRef):{“$ref”:“employees”,“$id”:“\u id”}
然而,来自mongoDB google组的这个线程证实了我刚才所说的:Thnx,我理解。但如何解决这个问题呢?获取包含所有对象和所有员工的列表。然后遍历时间戳,查看员工(通过id找到)tla是否与提供的tla匹配?但这似乎是一个巨大的挑战operation@joao你能给我一个答案吗(因为在MongoDB中不可能处理点符号作为参考),我接受is作为答案
@Id
private short id;
private String tla;
...
// Select only Object with type Object.class
Query<Object> q = ds.createQuery(Object.class);
// Query the Object only that have a borrowingHistory
q.field("borrowingHistory").exists();
// Query the Object only that have borrowers in the borrowingHistory
q.field("borrowingHistory.borrowers").exists();

// This is where I'm stuck
q.field("borrowingHistory.borrowers.tla").hasThisOne(providedTla);
com.google.code.morphia.query.ValidationException: Can not use dot-notation past 'borrowers' could not be found in 'nl.technolution.loanboard.datamodel.entity.Object' while validating - borrowingHistory.borrowers.tla