Java Play Framework findAll返回重复项

时间:2012-02-21 21:04:52

标签: java jpa playframework

我正在创建一个简单的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 重复项。

2 个答案:

答案 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

删除重复项