Java Play Framework findВсе возвращающие дубликаты - PullRequest
0 голосов
/ 22 февраля 2012

Я создаю простое приложение для очистки Twitter.У меня есть работа по запуску приложения, которая правильно запрашивает Twitter и сохраняет данные в базе данных MySQL.Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь создать дамп этих данных.Список, из которого я получаю Model.findAll(), возвращает количество X дубликатов, где X - общее количество строк в этой таблице.

Код контроллера выглядит следующим образом:

List<Tweets> tweets = Tweets.findAll();
render(tweets);

HTML-код выглядит следующим образом:

#{list tweets, as:'tweet'}
    <div class="tweet">
        <span>
            ${tweet.tweet_text} 
        </span>
    </div>
#{/list}

Я все-таки перепутался с кодом в контроллере и обнаружил, что это работает для возврата каждого из твитов:

List<String> tweets = Tweets.find("SELECT tweet_text FROM Tweets tweets").fetch(); 

ЕслиЯ выбираю более одного столбца и могу вернуть его объекту List<Object>, выполнить итерацию по этому списку и создать из него объект List<Tweets>, но я знаю, что это неправильный способ сделать это.Любой совет полезен в том, что я мог упустить.

tl; dr;Model.findAll() возвращает дубликаты, и я понятия не имею, почему.

EDIT : Для тех, кто спрашивает, в базе данных есть нет дубликатов.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Одна возможность иметь дубликаты - это когда вы выбираете дочерний объект вместе с родительским. Объединение вызывает дубликаты. В этом случае вы можете сделать

SELECT distinct tweet from Tweets tweet

для удаления дубликатов

0 голосов
/ 22 февраля 2012

Вы проверили, что вы не вставляете дубликаты, а не извлекаете их? Вы можете запросить вашу базу данных, чтобы узнать наверняка.

Один из способов не отображать дубликаты (но не решить основную проблему) - использовать следующий запрос:

List<String> tweets = Tweets.find("SELECT tweet_text FROM Tweets tweets group by tweet_text").fetch(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...