Java 本机查询不是映射计数(*)变量
我正在处理Jpa本地查询 我希望我的所有发送与它计数,但这是我的查询Java 本机查询不是映射计数(*)变量,java,mysql,jpa,nativequery,Java,Mysql,Jpa,Nativequery,我正在处理Jpa本地查询 我希望我的所有发送与它计数,但这是我的查询 select id,status,COUNT(*) as count from tb_abc where sender_id=?1 group by status 但问题是,当我在Mysql上运行它时,它将正常运行,但当我使用java代码(即本机查询)运行时,count将返回null或0 这是我的类,我已经从查询映射 这是本机查询 @存储库 全国公立医院{ @PersistenceContext private Entity
select id,status,COUNT(*) as count from tb_abc where sender_id=?1 group by status
但问题是,当我在Mysql上运行它时,它将正常运行,但当我使用java代码(即本机查询)运行时,count将返回null或0
这是我的类,我已经从查询映射
这是本机查询
@存储库
全国公立医院{
@PersistenceContext
private EntityManager em;
public List<TableAbc> get(Long senderId) {
@SuppressWarnings("unchecked")
List<TableAbc> resultData = (List<TableAbc>) em
.createNativeQuery(
"select *,COUNT(*) as count from tb_abc where sender_id=?1 group by status",
com.abc.TableAbc.class)
.setParameter(1, senderId)
.getResultList();
return resultData;
}
}
请帮助我……对于本机查询,请使用'@Transactional`注释再次使用@Transactional无效获取0值作为countTry
?
而不是?1
。这几乎是对mysql手动测试的唯一更改。虽然我对使用函数名的as count
表示怀疑。但是:您的count不会给出您认为会得到的结果,因为您的group by
用法是错误的(并且其他所有DBMS都会简单地拒绝该查询)。请参阅这里的示例以了解解释:但是当我在Mysql界面上尝试它时,它会很好地工作
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private Sender sender;
private Integer status;
@Transient
private int countTotal;
public int getCountTotal() {
return countTotal;
}
public void setCountTotal(int countTotal) {
this.countTotal = countTotal;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}