1.统计数据的时候 查询只返回了需要的字段
select
sum(result) result,
name ,
from
table_test
group by name
having class != '100001'
数据库返回结果
result name
1 张三
1 李四
3 王五
2 李六
数据库返回结果
jap返回List
result name
1 张三
1 张三
3 王五
2 李六
2.出问题的代码
Model代码
@Entity
@Data
@Table(name="Base_Role")
public class TableTestModel{
@Id
@GeneratedValue
@Column(name="result")
private String result;
@Column(name ="name")
private String name;
}
repository代码
public interface TableTestRepository extends JpaRepository<TableTestModel,String>{
@Transactional
@Query(value=" SELECT sum(result) result," +
" name" +
" FROM table_test" +
" group by name"
" having class != '100001'", nativeQuery = true)
List<TableTestModel> selectTableTest();
}
3.返回结果出错原因
应该是id相同 导致的映射出错
4.解决办法
查询的时候返回 这张表每条数据的最大主键id,这样可以保证每条数据的id都是不同的
select
max(id) id,
sum(result) result,
name ,
from
table_test
group by name
having class != '100001'
5.修改后的代码
Model代码
@Entity
@Data
@Table(name="Base_Role")
public class TableTestModel{
@Id
@GeneratedValue
@Column(name="id")
private String id;
@Column(name="result")
private String result;
@Column(name ="name")
private String name;
}
repository代码
public interface TableTestRepository extends JpaRepository<TableTestModel,String>{
@Transactional
@Query(value=" SELECT max(id) id," +
" sum(result) result," +
" name" +
" FROM table_test" +
" group by name"
" having class != '100001'", nativeQuery = true)
List<TableTestModel> selectTableTest();
}
6.修改后的代码返回的List是正确的
数据库返回结果
id result name
10001 1 张三
10002 1 李四
10003 3 王五
10004 2 李六
数据库返回结果
jap返回List
id result name
10001 1 张三
10002 1 李四
10003 3 王五
10004 2 李六
这样映射数据出错的问题就解决了