午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

spring data jpa如何只查詢實(shí)體部分字段

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

現(xiàn)在有一張article表,用來(lái)儲(chǔ)存文章,對(duì)應(yīng)的實(shí)體類如下:

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

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

解決方法

網(wǎng)上的一些方法分別是重寫(xiě)構(gòu)造器、或者自定義接口作為返回類型,但是我試了后都不能很好的解決問(wèn)題。下面提供一種方法,親測(cè)可以實(shí)現(xiàn)上面的需求。

一個(gè)字段的情況

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 文章數(shù)據(jù)庫(kù)訪問(wèn)層 */public interface ArticleRepository extends JpaRepository<Article,Long>,JpaSpecificationExecutor<Article> { @Query(value = 'select distinct categories from article',nativeQuery = true) // 這里注意返回值用String類型接收 List<String> findAllCategories();}

上面的nativeQuery屬性設(shè)置為true的時(shí)候可以使用SQL語(yǔ)句。

測(cè)試結(jié)果:

spring data jpa如何只查詢實(shí)體部分字段

控制臺(tái)打印:

spring data jpa如何只查詢實(shí)體部分字段

多個(gè)字段的情況

只需修改Repository,注意現(xiàn)在的返回值為L(zhǎng)ist<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();}

測(cè)試結(jié)果

spring data jpa如何只查詢實(shí)體部分字段

控制臺(tái)打印

spring data jpa如何只查詢實(shí)體部分字段

JPA查詢部分字段的相關(guān)事項(xiàng)

JPA使用HQL查詢部分字段出錯(cuò):

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

解決:

應(yīng)該@Entity指定name名,name值為對(duì)應(yīng)表名,同@Table的name值相同

使用HQL的注意:

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

2.select需跟實(shí)體,可以是map(必須是小寫(xiě),大寫(xiě)試了下報(bào)錯(cuò)),或者是將待查詢的字段單獨(dú)封裝成一個(gè)實(shí)體,new 實(shí)體

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 99久精品 | 欧美日本一区二区三区 | 日本免费一区二区三区 | 一曲二曲三曲在线观看中文字幕动漫 | 青青艹在线视频 | 亚洲人一区 | 在线免费观看一级片 | 亚洲在线 | 久久久欧美 | 在线观看欧美视频 | 日韩av不卡在线播放 | 中日韩中文字幕 | 久久久久久久久久久国产精品 | 91午夜在线 | 新黄色网址 | 日韩在线一二三区 | 日韩大片在线 | 欧美视频xxx| 亚洲九九热 | 欧美三级欧美一级 | 麻豆av网站 | 色综合五月 | 精品玖玖玖 | 久久久久亚洲精品国产 | 国内91视频| 91看片视频 | 在线日韩一区二区 | 亚洲成人免费av | 国产一区免费 | 欧美成人激情 | 国产91福利 | 御姐色网 | 五月婷婷激情综合网 | 精品性久久 | 一区二区三区国产在线观看 | 欧美日韩色 | 国产一级免费在线观看 | 亚洲一区二区三区在线视频 | 一区视频 | 午夜精品福利在线 | 国产哺乳奶水91在线播放 |