国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

spring data jpa如何只查詢實體部分字段

瀏覽:73日期:2023-07-11 11:37:11
需求

現在有一張article表,用來儲存文章,對應的實體類如下:

package com.qianyucc.blog.model;import lombok.*;import javax.persistence.*;/** * @author lijing * @date 2019-08-05 14:28 * @description 文章 */@Data@Entity@Table(name = 'article')public class Article { @Id // 主鍵自增 @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = 'author',unique = false,nullable = false,length = 20) private String author; @Column(name = 'title',length = 100) private String title; @Column(name = 'content',columnDefinition = 'clob not null') private String content; @Column(name = 'tags',length = 50) private String tags; @Column(name = 'type') private Integer type; @Column(name = 'categories',length = 50) private String categories; @Column(name = 'gmt_create') private Long gmtCreate; @Column(name = 'gmt_update') private Long gmtUpdate; @Column(name = 'tabloid') private String tabloid; @Column(name = 'likes') private Integer likes; @Column(name = 'views') private Integer views;}

現在需要查詢文章的所有分類,也就是categories屬性

解決方法

網上的一些方法分別是重寫構造器、或者自定義接口作為返回類型,但是我試了后都不能很好的解決問題。下面提供一種方法,親測可以實現上面的需求。

一個字段的情況

Controler:

package com.qianyucc.blog.controller;/** * @author lijing * @date 2019-08-05 15:13 * @description */@RestControllerpublic class ArticleController { @Autowired private ArticleRepositoryarticleRepository; @GetMapping('/getAllCategories') public Object getAllCategories(){ return articleRepository.getAllCategories(); }}

Repository:(這里省略Service層)

package com.qianyucc.blog.repository;import com.qianyucc.blog.model.*;import org.springframework.data.jpa.repository.*;import java.util.*;/** * @author lijing * @date 2019-08-05 14:28 * @description 文章數據庫訪問層 */public interface ArticleRepository extends JpaRepository<Article,Long>,JpaSpecificationExecutor<Article> { @Query(value = 'select distinct categories from article',nativeQuery = true) // 這里注意返回值用String類型接收 List<String> findAllCategories();}

上面的nativeQuery屬性設置為true的時候可以使用SQL語句。

測試結果:

spring data jpa如何只查詢實體部分字段

控制臺打印:

spring data jpa如何只查詢實體部分字段

多個字段的情況

只需修改Repository,注意現在的返回值為List<Map<String,Object>>

public interface ArticleRepository extends JpaRepository<Article,Long>,JpaSpecificationExecutor<Article> { @Query(value = 'select author,categories from article',nativeQuery = true) List<Map<String,Object>> findAllCategories();}

測試結果

spring data jpa如何只查詢實體部分字段

控制臺打印

spring data jpa如何只查詢實體部分字段

JPA查詢部分字段的相關事項

JPA使用HQL查詢部分字段出錯:

org.hibernate.hql.internal.ast.QuerySyntaxException: XXX is not mapped

解決:

應該@Entity指定name名,name值為對應表名,同@Table的name值相同

使用HQL的注意:

1.想要使用JPA查詢部分信息,需要使用HQL

2.select需跟實體,可以是map(必須是小寫,大寫試了下報錯),或者是將待查詢的字段單獨封裝成一個實體,new 實體

3.查詢的字段中需要指定as別名,否則得到的map結果集中,key值默認是'0',“1”,“2”…數字

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 日韩视频在线观看一区 | 亚洲欧美日韩另类精品一区二区三区 | 男女免费观看视频 | 国产精品综合久成人 | 日本农村寡妇一级毛片 | 黄色a三级免费看 | 色婷婷久久综合中文久久蜜桃 | 日本精品视频在线播放 | 国产午夜精品理论片影院 | 女人张腿让男桶免费视频网站 | 久草视频网站 | 视频偷拍一级视频在线观看 | 亚洲久久在线观看 | 亚洲欧美精品国产一区色综合 | 国产一区二区三区高清 | 国产裸体美女视频全黄 | 久久成人免费播放网站 | 草草久久97超级碰碰碰免费 | 久草视频免费看 | 国产美女精品视频免费观看 | 91精选视频在线观看 | 免费精品久久久久久中文字幕 | 日韩在线小视频 | 日韩色综合 | 欧美成人免费一级人片 | 午夜宅男在线永久免费观看网 | 久久免费毛片 | 国产免费一级视频 | 在线欧美不卡 | 久久香蕉国产精品一区二区三 | 欧美一级亚洲一级 | 亚洲日本va| 欧美 日韩 国产 成人 在线观看 | 日韩天天干| 国产成人在线免费视频 | 国内精品伊人久久久影视 | 日本久久免费 | 成人满18在线观看网站免费 | 国产日韩一区二区三区在线观看 | 成人欧美精品一区二区不卡 | 国产精品久久网 |