使用JPA选择前1个结果

时间:2011-07-15 13:57:45

标签: java jpa

我需要从DB中只带一个结果。我怎么能用JPA做到这一点?

Select top 1 * from table

我试过

  

“从表格t中选择t”

query.setMaxResults(1);

query.getSingleResult();

但没有奏效。还有其他想法吗?

4 个答案:

答案 0 :(得分:51)

试试这个

String sql = "SELECT t FROM table t";
Query query = em.createQuery(sql);
query.setFirstResult(firstPosition);
query.setMaxResults(numberOfRecords);
List result = query.getResultList();

应该有效

<强> UPDATE *

您也可以尝试这样

query.setMaxResults(1).getResultList();

答案 1 :(得分:19)

要在TypedQuery上使用getSingleResult,您可以使用

query.setFirstResult(0);
query.setMaxResults(1);
result = query.getSingleResult();

答案 2 :(得分:4)

最简单的方法是使用 @Query with NativeQuery选项,如下所示:

@Query(value="SELECT 1 * FROM table ORDER BY anyField DESC LIMIT 1", nativeQuery = true)

答案 3 :(得分:2)

通过在实体类上指定@NamedNativeQuery注释或使用EntityManager.createNativeQuery方法来使用本机SQL查询。您需要使用适当的类指定ResultSet的类型,或使用ResultSet映射。

相关问题