Вот сделка:объекта модификация непоследовательность рамочного Play 2.2.X
public static List<Survey> getFilteredSurveys(Municipality municipality, Company company) {
String sql = "SELECT DISTINCT id FROM survey INNER JOIN " +
"(SELECT SURVEY_ID FROM publicity INNER JOIN brand "+
"ON publicity.brand_id=brand.id WHERE brand.company_id="+company.getId()+") "+
"ON survey_id=survey.id WHERE survey.municipality_id="+municipality.getId();
RawSql rawSql = RawSqlBuilder.parse(sql).create();
List<Survey> surveys = Ebean.find(Survey.class).setRawSql(rawSql).findList();
for (Survey survey : surveys) {
List<Publicity> publicities = new ArrayList<>();
for (Publicity publicity : survey.publicities) {
if(publicity.getBrand().getCompany() == company){
publicities.add(publicity);
}
}
survey.setPublicities(publicities);
}
return surveys;
}
Это приложение предназначено для измерения рекламных в данном месте, Таким образом, люди загрузить «Обзор» места, содержащего все " Публичность "это место.
Эта функция должна возвращать список, Каждое обследование имеет список, И каждый Publicity имеет марка, которая связана с Компанией (например, кока-колы. -> Coca-Cola Co.)
Что Я пытаюсь сделать следующее: Учитывая компанию, показать все опросы, содержащие «Coca Cola Co.», гласности, но показывая только рекламу, принадлежащую «Coca Cola Co.»,
У меня есть контроллер «Surveys», который получает форму с муниципалитетом и компанией, называет этот метод, и он отображает представление с его результатом.
Это часть шаблона вида:
@(surveys: java.util.List[Survey])
@for(survey <- surveys){
@for(publicity <- survey.getPublicities){
<tr>
<td>@publicity.getBrand.getName</td>
<td>@publicity.getType.getName</td>
<td>@publicity.getSquareMeters</td>
</tr>
}
}
Проблема: несмотря на то, что я удалил некоторые из рекламных каждого обследования, все рекламных отображаются в представлении. Почему это происходит? Я знаю, что я не настаиваю на изменениях, и я не хочу, я просто хочу временно запутать данные, чтобы пользователь видел только рекламу, принадлежащую данной компании. Почему эта точка зрения не используется с использованием опросов, поскольку они даны ей, изменены?
Я думаю, что сравнение в следующем 'if' неверно' if (publicity.getBrand(). GetCompany() == company) '.Из вашего параметра 'company' это похоже на« Company' Object », но вы сравниваете его с помощью' == ', который должен быть действительным для« Целых чисел »для« Объекта », вы должны использовать' .equals'. Это может помочь вам. – Sivakumar
@ Сивакумар, спасибо, но я уже проверил результат этого метода, и полученные в результате рекламы - это то, что я ожидал, только те, которые принадлежат данной компании. – alejandrociatti