我正在创建一个简单的Twitter抓取应用程序。我有一个应用程序启动工作,正确查询Twitter并将数据保存到MySQL数据库。我遇到的问题是当我尝试转储这些数据时。我从Model.findAll()
返回的列表返回了X个重复项,其中X是该表中的总行数。
Controller代码如下:
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;博士; Model.findAll()
正在返回重复项,我不知道为什么。
编辑:对于那些提出要求的人,数据库中有 no 重复项。
答案 0 :(得分:0)
您是否检查过您没有插入重复项而不是获取它们?您可以查询您的数据库以确定。
不显示重复项(但不解决基础问题)的一种方法是使用以下查询:
List<String> tweets = Tweets.find("SELECT tweet_text FROM Tweets tweets group by tweet_text").fetch();
答案 1 :(得分:0)
重复的一种可能性是当您使用父对象获取子对象时。连接导致重复。在这种情况下,你可以做
SELECT distinct tweet from Tweets tweet
删除重复项