我想从表中选择一行,但我只想获得一行,并且该行将被随机选择。
答案 0 :(得分:4)
我想从表中选择一行,但我只想获得一行,并且该行将被随机选择。
没有任何特殊方法调用可以执行此操作,但有一些方法可以使用QueryBuilder
来完成此操作。
如果您有数字ID,那么类似的东西应该有用:
qb = dao.queryBuilder();
qb.where().raw("id >= (ABS(RANDOM()) % MAX(id) + 1)");
entity = qb.queryForFirst();
Sqlite RANDOM()
返回一个大的正整数或负整数。 ABS()
使其成为正数,MAX(id)
允许我们按最大id
值进行修改。 +1
允许我们实际选择最大id
行。
答案 1 :(得分:1)
您可以使用queryRaw:
Relation result = null;
String query = "SELECT * from relations ORDER BY RANDOM() LIMIT 1";
try {
result = queryRaw(query, getRawRowMapper()).getFirstResult();
} catch (SQLException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
我实际上做的是获取List&lt;&gt;从数据库中选择所选项目,然后使用<tbody>
@foreach (var item in ViewBag.ModuleList)
{
<tr style="color:#000000; height:5px;">
<td height="45px;">
@item.ModuleName
@Html.ActionLink("Go and Set", "ViewModule", "UserRegistration", new { idd = item.ModuleId, A = "Set" }, new { Class = "btn btn-info", style = " line-height:10px;left:3px;background-color:#24ade3; position:relative; width:65px;" })
</td>
</tr>
}
</tbody>
对象,使用返回列表的Random
作为size()
。是的,我确实检查了空值。
maxInt
答案 3 :(得分:0)
它对我有用:
dao.queryBuilder().orderByRaw("RANDOM()").queryForFirst();