У меня есть User
объект, в котором есть коллекция Transaction
объектов.
Я храню идентификатор объекта для моего User
объекта, и теперь мне нужен запрос к sum транзакциям в рамках объекта User:
@Persistable
public class User {
private String username;
private Collection<Transaction> transactions
//...getter/setters...
}
@Persistable
public class Transaction {
private int txnAmount;
//...getter/setter...
}
Учитывая идентификатор объекта User
, я хочу получить сумму всех Transaction.txnAmount
в коллекции User.transactions
.
Мой выстрел в это был:
Query query = pm.newQuery(User.class);
query.setFilter("JDOHelper.getObjectId(this) == :userIDParam");
query.setResult("sum(transactions.credits)");
query.execute(userID);
Я проверил, что userID действительно является объектом идентификатора базы данных, как и должно быть (я могу использовать его для запроса объекта User по идентификатору, используя его). Но я получаю исключение в методе query.execute ():
javax.jdo.JDOException: вызов метода "JDOHelper.getObjectId" равен нулю, но в настоящее время это не поддерживается запросами SODA
Использование DB4O в качестве хранилища данных, DataNucleus 2.2.1 в качестве реализации JDO