当前位置: 首页 > news >正文

jpa @query 动态表名

数据库分表

这里是用修改spring源码方式

#{#entityName} 默认为 实体类@Entity注解的value值,会修改了其中实现

@Query(nativeQuery=true,value="delete from #{#entityName} where mobile=:#{#mobile}") int deleteByMobile(@Param("entityName")String entityName,@Param("mobile")String mobile);

主要修改类:(粗略,未验证)

org.springframework.data.jpa.repository.query.ExpressionBasedStringQuery
private static String renderQueryIfExpressionOrReturnQuery(String query, JpaQueryMethod method,
			SpelExpressionParser parser) {

		Assert.notNull(query, "query must not be null!");
		Assert.notNull(metadata, "metadata must not be null!");
		Assert.notNull(parser, "parser must not be null!");

		if (!containsExpression(query)) {
			return query;
		}
		//
        String entityName=method.getParameters()-->entityName

		StandardEvaluationContext evalContext = new StandardEvaluationContext();
		if(entityName==null){
            evalContext.setVariable(ENTITY_NAME, method.getEntityInformation().getEntityName());
        }else{
            evalContext.setVariable(ENTITY_NAME, entityName);
        }


		query = potentiallyQuoteExpressionsParameter(query);

		Expression expr = parser.parseExpression(query, ParserContext.TEMPLATE_EXPRESSION);

		String result = expr.getValue(evalContext, String.class);

		if (result == null) {
			return query;
		}

		return potentiallyUnquoteParameterExpressions(result);
	}
org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery
public AbstractStringBasedJpaQuery(JpaQueryMethod method, EntityManager em, String queryString,
			QueryMethodEvaluationContextProvider evaluationContextProvider, SpelExpressionParser parser) {

		super(method, em);

		Assert.hasText(queryString, "Query string must not be null or empty!");
		Assert.notNull(evaluationContextProvider, "ExpressionEvaluationContextProvider must not be null!");
		Assert.notNull(parser, "Parser must not be null!");

		this.evaluationContextProvider = evaluationContextProvider;
		this.query = new ExpressionBasedStringQuery(queryString, method, parser);

		DeclaredQuery countQuery = query.deriveCountQuery(method.getCountQuery(), method.getCountQueryProjection());
		this.countQuery = ExpressionBasedStringQuery.from(countQuery, method, parser);

		this.parser = parser;

		Assert.isTrue(method.isNativeQuery() || !query.usesJdbcStyleParameters(),
				"JDBC style parameters (?) are not supported for JPA queries.");
	}

 

 

 

 

 

 

相关文章:

  • springboot 长连接 keepalive 记录
  • ping 命令打印日志
  • .bat批处理出现中文乱码的情况
  • dos命令把ping内容保存在文本中
  • 解决git:'instaweb' 不是一个 git 命令。参见 'git --help'。问题
  • yii gridview 根据字段值不同 显示不同样式及文字
  • python is 和 “==”的区别
  • mysql无符号和有符号的区别
  • mysql 偏移量 OFFSET和 limit的区分
  • mysql ERROR 1222 (21000): The used SELECT statements have a different number of columns
  • mysql order by 排序语法
  • mysql GROUP BY
  • Chrome安装程序遇到错误 0xe0000008解决办法
  • python3 thinter tkinter.ttk — Tk主题样式设置
  • tkinter ttk.Combobox Combobox 下拉框设置背景颜色
  • 5、React组件事件详解
  • jdbc就是这么简单
  • JS学习笔记——闭包
  • Linux Process Manage
  • Spring核心 Bean的高级装配
  • Vim Clutch | 面向脚踏板编程……
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 二维平面内的碰撞检测【一】
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一道闭包题引发的思考
  • 异常机制详解
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #Ubuntu(修改root信息)
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (三)mysql_MYSQL(三)
  • (三)终结任务
  • (未解决)macOS matplotlib 中文是方框
  • (一)VirtualBox安装增强功能
  • (转)【Hibernate总结系列】使用举例
  • ***详解账号泄露:全球约1亿用户已泄露
  • .gitignore文件设置了忽略但不生效
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net2005怎么读string形的xml,不是xml文件。
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ C++ ] STL---stack与queue
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [BSGS算法]纯水斐波那契数列
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [BZOJ3223]文艺平衡树