Вы можете сделать это без JDOQL. Если у пользователя есть только одна команда, то вы можете смоделировать это с отношением «один ко многим» , которое является двунаправленным.
@PersistenceCapable
public class Team {
@Persistent(mappedBy = "team")
private List<Employee> employees;
}
@PersistenceCapable
public class Employee {
@PrimaryKey
private String user;
@Persistent
private Team team;
}
Чтобы получить Employee
, вы можете отправить запрос по электронной почте:
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
PersistenceManager pm = PMF.get().getPersistenceManager();
Employee employee = pm.getObjectById(Employee.class, user.getEmail());
Team employee.getTeam();
Если пользователь может быть во многих командах, вам нужно использовать неизвестное отношение . Из вашего описания звучит так, что у каждой команды есть один пользователь (?), Поэтому вам может понадобиться неизвестное отношение «многие ко многим».
Часть, которая не очень хорошо документирована, состоит в том, что вы не можете использовать объект User
в качестве первичного ключа (возможные типы для первичного ключа весьма ограничены ), поэтому вы часто сталкиваетесь используя электронную почту в качестве первичного ключа. Объект User
может быть полем, но чтобы сделать вашу модель данных согласованной, вы часто либо используете электронную почту везде, чтобы ссылаться на пользователя, либо используете объект-оболочку, как я делал выше.