时间:2021-05-20
QueryDSL简介
官网
1 QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。
2 Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。
3 借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前QueryDSL支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。
今天是2020年第一天在家办公,就出现了跟在公司不一样的现象,deploy项目到maven库时失败,之前一直成功。
查到原因在于QueryDSL类没有生成,但为何在公司可以而在家里就不行呢?
鉴于Idea的“Generate Sources And Update Folders”操作一闪即过,信息太少,所以不得先从原理上追溯
1. 首先的疑问是:当执行Idea的“Generate Sources And Update Folders”操作时,都发生了什么?
参考stackoverflow,解释如下
这里需要了解的是Maven的phase都有哪些?generate-sources是什么时机执行的?
答案是generates阶段会在validate和compile阶段之间执行,详细可参考这里
2. 那么第二个问题来了,我们的项目中哪些plugin可以执行generate sources?
很容易找到下面的配置(此插件开源在github上)
github的解释很简单:apt-maven-plugin provides Maven integration of the Java 6 APT functionality.
这里有必要了解下什么是Java APT?
APT(Annotation Process Tool),是一种在代码编译时处理注解,按照一定的规则,生成相应的java文件,多用于对自定义注解的处理,
目前比较流行的Dagger2, ButterKnife, EventBus3都是采用APT技术,对运行时的性能影响很小
也就是说,APT是用代码生成代码的工具,会在process过程生成java文件,那么为什么我们最终生成的往往只有class文件呢?这是因为很多插件都做了第二步的清理操作。
至于Java8之后APT被“"Pluggable Annotation Processing API".”替换,那就是后话了
另外,此插件依赖querydsl,所以querydsl也有必要了解下
QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。
目前QueryDSL支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。
所以说我们项目中所用的QueryDSL是在JPA之上的,是为了补充JPA的复杂查询支持不足而引入的
3. 那么如何手动单独执行此APT的process呢?
这样考虑的目的其实就是为了得到更多信息,此步骤可以用Idea的此选项右键执行,或者在command中执行“mvn apt:process”
会发现输出log中输出以下警告
'build.plugins.plugin.version' for com.mysema.maven:apt-maven-plugin is missing. @ line 46, column 21
于是就在pom配置中添加plugin的最新version
<version>1.1.3</version>
再次generate,生成成功!
通过解决此问题得到一点感触:每一次出现问题不好解决时,尝试从原理层面做一个快速全面的了解,这样不单会有助于使自己对于技术“知其所以然”,而且会反过来触发解决问题的新思路。
总结
以上所述是小编给大家介绍的Idea的Generate Sources无法生成QueryDSL问题及解决方法,希望对大家有所帮助!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
解决方法:补充:idea中yml文件图标小绿叶变成小网格问题及自动提示失效解决方法idea中yml文件图标小绿叶变成小网格问题及自动提示失效解决方法.yml文件
问题:没错就这样的,出现这种原因是IDEA没有识别到文件解决办法:File>>projectstructure>>Modules把Java标成sources,相
IDEA端口占用解决方法后台开发时经常遇到端口占用问题IntellijIDEA端口占用解决方法:方法1:打开任务管理器,关闭java进程;方法2:修改端口号的方
问题描述idea启动tomcat后乱码了,并且,idea的各种编码都是设置的为UTF-8,但是中文就是乱码了。解决方法进入idea的安装目录,进入bin目录下。
1问题描述某天使用Gradle构建项目时,IDEA报错如下:2原因原因是下载的Gradle,也就是zip压缩包不完整,导致无法使用Gradle构建。3解决方法3