mysql jpa 批注 视图_通过JPA注解映射视图的实体类 jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句...

参考: https://blog.csdn.net/qq465235530/article/details/68064074

https://www.cnblogs.com/zj0208/p/6008627.html

这里主要说一下怎么用jpa映射一个视图的实体类,其实跟表映射一样,就是需要添加一个空的主键id标识

package com.cf.bus.core.rs.template.domain;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name = "v_sc_template") // 这个是视图名称

public class SupplyChainTemplate {

@Id // 添加一个空的id标识,因为jpa在映射实体是需要一个id,这个必须

@Column(name = "name")

private String name;

@Column(name = "industry")

private String industry;

@Column(name = "com_type")

private String comType;

@Column(name = "remarks")

private String remarks;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getIndustry() {

return industry;

}

public void setIndustry(String industry) {

this.industry = industry;

}

public String getComType() {

return comType;

}

public void setComType(String comType) {

this.comType = comType;

}

public String getRemarks() {

return remarks;

}

public void setRemarks(String remarks) {

this.remarks = remarks;

}

}

@id一定要有,否则会报构建entityManagerFactory异常。

---------------------

作者:C7BF

来源:CSDN

原文:https://blog.csdn.net/qq465235530/article/details/68064074?utm_source=copy

版权声明:本文为博主原创文章,转载请附上博文链接!

参考文章:http://www.tuicool.com/articles/jQJBNv

1. 一个使用@Query注解的简单例子

@Query(value = "select name,author,price from Book b where b.price>?1 and b.price2")

List findByPriceRange(long price1, long price2);

2.  Like表达式

@Query(value = "select name,author,price from Book b where b.name like %:name%")

List findByNameMatch(@Param("name") String name);

3. 使用Native SQL Query

所谓本地查询,就是使用原生的sql语句(根据数据库的不同,在sql的语法或结构方面可能有所区别)进行查询数据库的操作。

@Query(value = "select * from book b where b.name=?1", nativeQuery = true)

List findByName(String name);

4. 使用@Param注解注入参数

@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")

List findByNamedParam(@Param("name") String name, @Param("author") String author,

@Param("price") long price);

5. SPEL表达式(使用时请参考最后的补充说明)

'#{#entityName}'值为'Book'对象对应的数据表名称(book)。

public interface BookQueryRepositoryExample extends Repository{

@Query(value = "select * from #{#entityName} b where b.name=?1", nativeQuery = true)

List findByName(String name);

}

6. 一个较完整的例子

48304ba5e6f9fe08f3fa1abda7d326ab.png

public interface BookQueryRepositoryExample extends Repository {

@Query(value = "select * from Book b where b.name=?1", nativeQuery = true)

List findByName(String name);// 此方法sql将会报错(java.lang.IllegalArgumentException),看出原因了吗,若没看出来,请看下一个例子

@Query(value = "select name,author,price from Book b where b.price>?1 and b.price2")

List findByPriceRange(long price1, long price2);

@Query(value = "select name,author,price from Book b where b.name like %:name%")

List findByNameMatch(@Param("name") String name);

@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")

List findByNamedParam(@Param("name") String name, @Param("author") String author,

@Param("price") long price);

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

7.  解释例6中错误的原因:

因为指定了nativeQuery = true,即使用原生的sql语句查询。使用java对象'Book'作为表名来查自然是不对的。只需将Book替换为表名book。

@Query(value = "select * from book b where b.name=?1", nativeQuery = true)

List findByName(String name);

补充说明(2017-01-12):

有同学提出来了,例子5中用'#{#entityName}'为啥取不到值啊?

先来说一说'#{#entityName}'到底是个啥。从字面来看,'#{#entityName}'不就是实体类的名称么,对,他就是。

实体类Book,使用@Entity注解后,spring会将实体类Book纳入管理。默认'#{#entityName}'的值就是'Book'。

但是如果使用了@Entity(name = "book")来注解实体类Book,此时'#{#entityName}'的值就变成了'book'。

到此,事情就明了了,只需要在用@Entity来注解实体类时指定name为此实体类对应的表名。在原生sql语句中,就可以把'#{#entityName}'来作为数据表名使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笨办法学C 练习45:一个简单的TCP/IP客户端

练习45:一个简单的TCP/IP客户端 原文:Exercise 45: A Simple TCP/IP Client 译者:飞龙 我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫做netclient。为此我需要向Makefile添加一些工具,来处理bin/目录下…

Cppunit 源码 SynchronizedObject

运用C的构造&#xff0c;析构进行&#xff0c;加锁解锁。在函数进入的时候定义临时变量。任何一个分支推出的时候都会调用析构函数。避免多分支出现的问题。 1 #ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H2 #define CPPUNIT_SYNCHRONIZEDOBJECT_H3 4 #include <cppunit/Portabil…

hive安装需要安装mysql区别_HIVE安装系列之一:在Linux中安装mysql,为其作为hive的metastore做准备...

安装mysql的Linux机器是Centos6的系统&#xff0c;机器名字叫combanc05mysql我采用的是5.5版本。安装过程中需要解决新旧版的冲突问题&#xff0c;并允许mysql被远程访问。以便其作为hive的元数据仓库顺利运行。下载到mysql在linux中安装mysql&#xff0c;首先可以到官网去找Li…

数据预处理和特征工程

一、数据预处理 1.数据采集 2.数据格式化&#xff08;存储格式等&#xff09; 3.数据清洗&#xff1a;去掉脏数据 简单直观可以看出的不可能数据 组合或统计属性判定 缺失值处理 1.删除元祖&#xff1a;删除这一条记录或者一列特征&#xff0c;适合记录或者特征占总样本比例很小…

个人作业五:四则运算二

四则运算2 一、设计思路&#xff1a; 1、题目避免重复&#xff1a; (1)利用系统时间来产生随机数&#xff0c;重复率会降低。 (2)建立链表&#xff0c;逐个判断。可读取写入文件。 2、可定制&#xff08;数量/打印方式&#xff09;&#xff1a; (1)格式有默认值; (2)可以选择重…

javascript继承模式原理与示例深入剖析

原型链ECMAScript 中描述了原型链的概念&#xff0c;并将原型链作为实现继承的主要方法。 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。简单回顾一下构造函数、原型和实例的关系&#xff1a;每个构造函数都有一个原型对象&#xff0c;原型对象都包含一…

mysql innodb_sort_buffer_size_mysql优化---第7篇:参数 innodb_buffer_pool_instances设置

摘要&#xff1a;1 innodb_buffer_pool_instances可以开启多个内存缓冲池&#xff0c;把需要缓冲的数据hash到不同的缓冲池中&#xff0c;这样可以并行的内存读写。2 innodb_buffer_pool_instances参数显著的影响测试结果&#xff0c;特别是非常高的 I/O 负载时。3 实验环境下&…

函数和过程

函数&#xff1a;def test(s)&#xff1a; ... return 过程没有return&#xff0c;函数有。但是过程也是函数 def test0():过程msgi am houndprint(msg) def test1():函数msgi am dogprint(msg)return msg t1test0() t2test1() print(t1) print(t2) i am houndi am dogNone 没…

关于html的一些杂技

html预定义字符指的是 :< > html实体指的是 $amp 等 php中htmlspeciachar()就是讲html预定义字符转换成html实体. 浏览器渲染时,会将html实体转换成html预定义字符显示出来,但是查看html源码是显示的还是html实体. 而如果查看源码时(ctrlu),中<>的内容不会再网页…

cordova 5.0版本说明

2015/04/21发布Cordova 5.0.0! 1&#xff09;插件从Cordova plugins registry&#xff08;CPR&#xff09;全部移到npm&#xff0c;并且重新命名 ***org.apache.cordova.* → cordova-plugin-* 旧&#xff09;$ cordova plugin add org.apache.cordova.console 新&#xff09…

mysql综合查询索引优化_MySQL数据库SQL优化之确定问题使用索引提高查询效率

在EXPLAIN分析SQL中&#xff0c;已经可以确定是对客户表customet的全表扫描导致效率的不理想&#xff0c;那么对客户表customer的email字段创建索引&#xff0c;具体如下:mysql> create index idx_email on customer(email);创建索引后&#xff0c;再看一下这条语句的执行计…

无法找到python第三方库的处理方法

如果工程目录和python安装目录不是同一个&#xff0c;那么要将第三方库复制一份到你的工程目录的site-package目录中&#xff0c;这样工程才能引用。反正我是这样的&#xff0c;大家如果遇到类似情况可以参考。 我也在纳闷&#xff0c;像c#这些你在引用第三方库时自动就给你复制…

python-列表

list列表是一个有序的集合&#xff0c;可以随时添加和删除 len(XXX)函数计算XXX这个列表元素个数 还有一个概念就是索引index xxx(2) xxx列表的第三个元素 xxx(-2) xxx列表的倒数第二个元素 append 添加元素到末尾 insert 插入元素到指定的位置 pop()  删除末尾的元素…

201. Bitwise AND of Numbers Range

题目&#xff1a; Given a range [m, n] where 0 < m < n < 2147483647, return the bitwise AND of all numbers in this range, inclusive. For example, given the range [5, 7], you should return 4. 链接&#xff1a; http://leetcode.com/problemset/algorithm…

laravel mysql驱动_Laravel 如何同时使用不同数据库驱动

queue配置首先说明一下我之前的项目中如何使用queue的。我们现在的项目都是用的symfony&#xff0c;老一点的项目用的symfony1poser/vendor/bin 加入到环境变量中。source ~/.bash_profile 就可以直接在命令行中使用laravel了。试一下。laravel -V 能够看到下面的&#xff0c;就…

open-falcon的插件机制

Plugin可以看做是对agent功能的扩充。对于业务系统的监控指标采集&#xff0c;最好不要做成plugin&#xff0c;而是把采集脚本放到业务程序发布包中&#xff0c;随着业务代码上线而上线&#xff0c;随着业务代码升级而升级&#xff0c;这样会比较容易管理。 1. 编写采集脚本 用…

python 获取文件大小,创建时间和访问时间

# -*- coding: UTF8 -*- import timeimport datetime import os 1、  把时间戳转化为时间: 1479264792 to 2016-11-16 10:53:12    def TimeStampToTime(timestamp):       timeStruct time.localtime(timestamp)       return time.strftime(%Y-%m-%d %H:%…

mysql 免安装版迁移_mysql免安装版 安装配置 (转)

1. 下载MySQL Community Server 5.6.132. 解压MySQL压缩包将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:"D:\Program Files\MySQL\mysql-5.6.13-win32"将解压目录下默认文件 my-default.ini 拷贝一份&#xff0c;改名 my.ini复制下面的配置信息到 my.ini…

从简单的信道预计说起

前面写了关于CP在OFDM中的应用&#xff0c;主要是记录一点零星的想法而已&#xff0c;今天突然想写点关于信道特性方面的东西。原因有下面几点&#xff1a; 1&#xff09;信道在仿真中的地位不容置疑&#xff0c;不同信道的条件下的仿真是很多课题的重点&#xff0c;自己差点儿…

python input函数赋值法_赋值法 - 静雅斋数学 - 博客园

前言赋值法是高中数学中比较常用的一种方法&#xff0c;使用“赋值法”的数学素材和知识点&#xff0c;散落在高中数学的几乎各个章节中&#xff0c;现对其进行整理&#xff0c;以便于学习。比如学习函数时可以赋值法给出单调性&#xff0c;奇偶性&#xff0c;周期性等&#xf…