我正在尝试在 Spring 应用程序中运行一些本机 SQL 查询。我没有实体或JpaRepository
班级。我知道这很奇怪,但这是一个微服务,只是收集两个计数查询并将其发送到 Kafka。
相信我,我所需要的只是查询中的这两个整数。我运行这些代码并且总是返回 0。我可以在日志中看到 Hikari 正在连接到数据库,所以我不知道该怎么办。搜索了很多,但所有答案都涉及@Query
解决方案,这对我不起作用。
@Repository
@AllArgsConstructor
public class ReportRepository {
private final EntityManager em;
public int numberOfAccounts() {
String sql = "SELECT count(*) FROM account";
Query query = em.createNativeQuery(sql);
System.out.println(query.getFirstResult());
return query.getFirstResult();
}
public int numberOfSubscriptions() {
String sql = "SELECT count(*) FROM subscriptions";
Query query = em.createNativeQuery(sql);
System.out.println(query.getFirstResult());
return query.getFirstResult();
}
}
如果你有EntityManager
,根据你所说的它无法连接到数据库,请尝试以下方法:
public int numberOfSubscriptions() {
// >> "subscriptions" has to be the exact name of your table
// if does not work, consider trying SUBSCRIPTIONS or Subscriptions
String sql = "SELECT count(*) FROM subscriptions";
Query query = em.createNativeQuery(sql);
// getSingleResult() instead :)
return ((Number) query.getSingleResult()).intValue();
}
有这个(有点旧)JavaDoc查询.getFirstResult() https://docs.oracle.com/javaee/6/api/javax/persistence/Query.html#getFirstResult() :
查询对象设置为检索的第一个结果的位置。如果 setFirstResult 未应用于查询对象,则返回 0
所以,我想说这不是适合你的情况的正确方法。
快乐黑客:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)