Java 本机查询不是映射计数(*)变量

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

我正在处理Jpa本地查询

我希望我的所有发送与它计数,但这是我的查询

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;
}