我有查询(总是返回 List has 1
SysAutoId
)
@Query(value = "SELECT * FROM SYSAutoID WHERE RefTypeCategory = ?1 AND BranchID = ?2 ", nativeQuery = true)
List<SysAutoId> findSpecific(Integer refTypeCategory, Integer branchId);
我想创建一个像
这样的方法@Query(value = "SELECT * FROM SYSAutoID WHERE RefTypeCategory = ?1 AND BranchID = ?2 ", nativeQuery = true)
SysAutoId findSpecific(Integer refTypeCategory, Integer branchId);
返回一个实体,怎么做?
返回类型应该是Entity的
Optional
,因为它只返回第一条匹配的记录,看一下findById方法的语法
Optional<T> findById(ID primaryKey)
代码
@Query(value = "SELECT * FROM SYSAutoID WHERE RefTypeCategory = ?1 AND BranchID = ?2 ", nativeQuery = true)
Optional<SysAutoId> findSpecific(Integer refTypeCategory, Integer branchId);
你不需要Optional,你只需要确保查询永远不会返回超过1个结果,否则会出现In CorrectResultSizeDataAccessException异常。
您可以在此处
查看支持的查询返回类型对于 T 的返回类型,它表示:
一个独特的实体。期望查询方法最多返回一个结果。如果没有找到结果,则返回 null。多个结果会触发 In CorrectResultSizeDataAccessException。
如果您知道您的查询永远不会返回超过 1 个结果,您应该没问题,但如果您不确定,我建议在查询末尾添加 LIMIT 1。