基于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”…数字

JPA中自定义查询语句一定要注意这些

JPA的原生语句如何支持where a=X and b>x,未找到。

于是自定义,由于JPA底层是hibernate,所以需要HQL语句。

真尼玛坑,sql语句为了所谓的面向对象,整个HQL语句,简直就是典型的强行面向对象。

所以,你不得不如此:select u from Table u where u.x=x and u.y>y

每次写这个最常忘记的是第二个u,完全反人类的语法。

而且JPA解析的时候,Table必须大写开头。

这个估计是先要JPA解析成HQL语句,再执行。

至于为啥要大写开头,可能是由于JPA的规定吧。

JPA会把TableEnt对应到table_ent这张表,为什么写成tableEnt就要报错。太不人性化。

补充

CTM,JPA查询语句中把元素开头写成了小写。

findByStatusAndTimeMilliLessThan写成了findByStatusAnd**t**imeMilliLessThan

这还是看到之前写的附带between的查询才想起来

然between可以混着写,那less和greater应该也行

也是被JPA的语法坑过几次,才会对JPA这么没信心。

比如:findFirst必须写成findFirstBy

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • spring data jpa如何只查询实体部分字段

    需求 现在有一张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

  • SpringBoot使用JPA实现查询部分字段

    目录 SpringBoot JPA查询部分字段 自定义简单的查询方法 SpringBoot JPA查询部分字段 用过JPA的都知道,只需要继承JpaRepository 根据Jpa的函数命名规范写出接口中的函数,不需要实现,底层就可以自动解析成各种数据库的sql语句,进行增删改查等操作. 自定义简单的查询方法 如findByUserName,findByUserNameOrEmail(String username, String email)等条件的属性名称与个数要与参数的位置与个数一一对应,

  • JPA @Basic单表查询如何实现大字段懒加载

    JPA @Basic单表查询实现大字段懒加载 近期看了JPA@Basic注解的使用,看到该注解可以设置字段的懒加载. 1.以前碰到的懒加载: 我们知道,多表关联的时候,我们是可以配置懒加载的,比如一个Company类,里面可以关联员工表,办公设备表,当我们查看公司信息的时候,我们并不需要直接加载员工表,办公设备表,只需要在用户查看员工,查看设备的时候再加载,这样可以提高加载效率. 长话短说,大概是这样子的 @Entity @Table(name = "Company") public

  • spring data jpa 查询自定义字段,转换为自定义实体方式

    目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台. 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2 背景:首先建立 entity 映射数据库(非专业 java 不知道这怎么说) @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long

  • 基于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.查询的字

  • 基于postgresql查询某个字段属于哪个表的说明

    一.场景还原 前端小林问我,它从前端的返回的某些字段,想知道那个表有这个字段,它想操作这个表-- 二.sql语句 SELECT * FROM information_schema. COLUMNS WHERE COLUMN_NAME = 'storename'; SELECT c.relname AS "表名",a.attname AS "字段名",c.oid FROM pg_class c LEFT JOIN pg_attribute a ON a.attreli

  • spring data jpa查询一个实体类的部分属性方式

    目录 springdatajpa查询一个实体类的部分属性 首先我们定义两个实体类 然后创建person实体类的repository 返回结果只包含firstName和lastName两个属性 springdatajpa查询部分字段.多余附加字段 第一种方法:使用model查询时转化 第二种方法:在service里边转换成JSON 第三种方法:select语句部分字段使用默认值 spring data jpa查询一个实体类的部分属性 使用Spring Data Repository查询时候,通常情

  • JPA 查询原生SQL转换VO对象方式

    目录 JPA查询原生SQL转换VO对象 JPA非注解方式原生sql查询的一些注意事项 JPA查询原生SQL转换VO对象 List<String> sqlList = RiverCourseSql.getRiverCourseSQLString(new RiverCourseDataQO()); List<RiverCourseDataVO> riverCourseDataVO = rsvrfsrBDao.executeNativeQuery2Obj(sqlList.get(0),

  • 基于JPA的Repository使用详解

    目录 Spring Data JPA Repository CrudRepository PagingAndSortingRepository JpaRepository JpaSpecificationExecutor JpaRepository查询功能 Jpa方法命名规则 使用方法 解析过程 JPA自定义Repository方法 下面是具体的实现 经过实践发现 Spring Data JPA Spring Data是Spring提供的操作数据的框架,Spring Data JPA是Sprin

  • 关于查询MySQL字段注释的5种方法总结

    目录 前言 创建测试数据库 查询所有表注释 查询所有字段注释 字段注释查询方式1 字段注释查询方式2 字段注释查询方式3 字段注释查询方式4 字段注释查询方式5 修改表注释和字段注释 修改表注释 修改字段注释 总结 前言 很多场景下,我们需要查看 MySQL 中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式. 创建测试数据库 开始之前咱们先创建一个数据库,以备下面演示使用. -- 如果存在就先删除数据库 drop database if exists test

  • 利用Mybatis向PostgreSQL中插入并查询JSON字段

    目录 应用场景介绍 数据insert 数据select BATCH 批量插入 前言: 这里我使用的是TimescaleDB,加了一个时间戳字段,不过没差.关于PostgreSQL中Json数据类型的操作,可以参考官网. 应用场景介绍 将TCP发过来的数据包(通过消息队列发过来)解析出数据(一个数据包含有多帧,一帧中含有多条信息),并和本地规则表的格式对应起来.以JsonLineMsg实体类代表对应的一帧数据: package tsdb.entity; import lombok.AllArgsC

  • MyBatis-Plus 查询指定字段的实现

    首先创建一个数据库表,如下图所示: 然后创建一个Spring Boot项目,pom.xml和配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema

随机推荐