Это мой первый вопрос на любом из этих сайтов, так что простите мой непрофессионализм.Playframework Siena Фильтрация и заказ
Я использую playframework с SIENA модуля (с GAE), и я наткнулся на следующую проблему: давалось 3 лиц:
public class Meeting extends Model{
@Id
public Long id;
public String place;
@Owned
Many<MeetingUser> users;
.
.
.
}
public class User extends Model{
@Id
public Long id;
public String firstName;
public String lastName;
@Owned
Many<MeetingUser> meetings;
.
.
.
}
public class MeetingUser extends Model{
@Id
public Long id;
public Meeting meeting;
public User user;
.
.
.
public User getUser(){
return Model.all(User.class).filter("id", user).get();
}
public Meeting getMeeting(){
return Model.all(Meeting.class).filter("id", meeting).get();
}
}
Например я перечислю встречу и все их пользователи:
public static void meetingInfo(Long meetingId){
Meeting meeting = Models.all(Meeting.class).filter("id",meetingId);
List<MeetingUser> meetingusers = meeting.asList();
List<User> users = new ArrayList<User>();
for(MeetingUser mu: meetingusers){
users.add(mu.getUser());
}
render(users);
}
Это сделано (есть ли лучший способ здесь?) Однако, когда дело доходит до фильтрации (особенно для динамической фильтрации для многих многих полей), я не могу использовать метод фильтра Query на MeetingUser как Мне нужно отфильтровать поле поля MeetingUser (firstName). Такая же проблема возникает для упорядочения. Мне нужно решение для обеих проблем.
Надеюсь, моя проблема ясна, и я ценю любую помощь здесь.
Я не знаю, что вы подразумеваете под запросом на соединение. И каково решение для совместимости с GAE. Ваш пример не будет работать в моем опыте, как вы говорите: meeting.users.asQuery() // возвращает запрос .filter ("firstname", "XXX"). Fetch(); // генерирует ошибку, поскольку класс MeetingUser не имеет поля «firstname». –
запрос на соединение - это запрос на несколько таблиц одновременно ... классический SQL JOIN (вы можете найти информацию об этом в сети) – mandubian
Что касается моего примера, я думал, что вы хотите отфильтровать первое имя MeetingUsers ... So кажется, я не понимал, что вы хотели ... – mandubian