在 JPA 中获取单行

新手上路,请多包涵

如何从 JPA 中的实体获取单行?

表:员工

    @Id
    private int empId;
    private String empName;
    ...

JPA 默认返回 List。我试图获取单行。

员工资料库:-

     public Employee findByEmpName(String empName);

另一种方法是这样做,@Query 应该被使用。

     @Query(value="select e from Employee e where empName = ?1 limit 1", nativeQuery=true)
    public Employee findByEmpName(String empName);

我如何确保它返回单行和正确的结果。任何帮助表示赞赏..提前致谢。

原文由 Akkave 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 460
2 个回答

您不需要“确保”任何事情。

如果您没有指定为返回的排序集合(例如 List<Employee> 而不是 Employee )并且您的查询返回多个结果,它将启动 javax.persistence.NonUniqueResultException: result returns more than one elements

如果您的查询返回更多行并且您只想要其中之一,或者添加一个条件来区分您真正想要的那些行,或者,如果它们相同,则添加一个很好的旧 distinct

我如何确保它返回单行和正确的结果。

那是你编写查询时的工作

原文由 Zeromus 发布,翻译遵循 CC BY-SA 3.0 许可协议

有一个开箱即用的解决方案,在存储库中,您可以将方法命名为 findFirstBy...findTopBy... ,这应该可以解决问题。

您可以在 Spring 参考文档 中找到更多信息

原文由 milosdju 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题