Jpa通过Pageable分页查询时,如果排序字段含有下划线会抛出异常

异常内容如下:

Caused by: org.springframework.data.mapping.PropertyReferenceException:

No property cpu found for FusionHost Did you mean 'ip?

我的pojo的字段:

@Column(name = "CPU_USAGE", length = 12)

private float cpu_usage;

排序的参数我传的是cpu_usage,

经过百度一番搜索,了解到下户线("_")是jpa的保留字段,java的命名规范是驼峰形式,所以下划线首先是不符合规范的,但是每个人写代码都有自己的习惯,规范这个东西毕竟不是强制性的,不按照规范写也不会报错,所以遇到这种情况,我们还是得需要处理下的。

这个问题的解决办法有两种:

1、修改自己的pojo的字段为驼峰形式,排序字段参数修改为cpuUsage,即可。

private Stirng cpuUsage;

2、pojo字段不变,排序字段的参数修改为cpu__usage,采用双下划线的方式来抵消的jpa对_下划线的处理。

个人建议:如果在项目初始几点,修改字段对其他功能代码影响较少,建议使用第一种方式,从根本上解决问题,如果工程体积比较大,牵一发而动全身,那么建议还是采用第二种方式处理。当遇到排序的时候,一定记得使用

str = str.replace("-","--");

特殊处理一下。

每天进步一点点,坚持带来大改变。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。