在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ SpringJPA的Sort如何對帶有下劃線的字段排序?

SpringJPA的Sort如何對帶有下劃線的字段排序?

各位前輩,第一次用SpringJPA?,F(xiàn)在實體類有一個字段是這樣的:

    private String movie_id;

而我想通過這個字段排序,繼承PagingAndSortingRepository后,代碼為:

    Sort sort = new Sort(Sort.Direction.DESC,"movie_id");
    Pageable pageable = PageRequest.of(0,PAGE_LIMIT,sort);
    Page<MovieInfo> movieInfopage = movieInfoRepository.findAll(pageable);
    

可是報錯了:

org.springframework.data.mapping.PropertyReferenceException: No property movie found for type MovieInfo!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:92) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:356) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]

手動改movie_id為movieId后即可操作。
那肯定是框架無法識別下劃線 ....
前輩們咋辦!可以不用大改字段名么?

回答
編輯回答
陌南塵

通過實驗發(fā)現(xiàn)了,bean中的字段可以定義為駝峰,通過hibernate的命名策略可以自動把駝峰轉(zhuǎn)化為下劃線,然后Sort中需要的其實是bean中的字段。例如定義為movieId,數(shù)據(jù)會自動轉(zhuǎn)為movie_id,然后會根據(jù)bean的字段也就是movieId去排序。

2017年5月28日 00:52
編輯回答
舊螢火

首先,java field應(yīng)該用camel case,一開始就不應(yīng)該用下劃線。再說你這個問題,根據(jù)spring文檔,下劃線是保留字段:“As we treat underscore as a reserved character we strongly advise to follow standard Java naming conventions (i.e. not using underscores in property names but camel case instead).”兩個解決方案:
1.movie_id改成movieId

  1. 試試兩個下劃線escape掉下劃線,Sort sort = new Sort(Sort.Direction.DESC,"movie__id");
2017年11月3日 15:08