我想使用具有QueryDSL支持的Spring Data JDBC。根据Spring留档(https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#core.extensions.querydsl),它是受支持的,但我无法使其工作。
我使用MariaDB作为数据库,我的SpringBoot版本是2.6.0。
我对pom.xml的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-sql-spring</artifactId>
</dependency>
配置:
@Configuration
@EnableJdbcRepositories
@EnableTransactionManagement
public class DBConfig {
}
我的实体类:
package com.test.model.metadata;
import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Table;
@Table
public class Action {
@Id
private long id;
private String name;
...
}
我的存储库类:
java prettyprint-override">package com.test.repository;
import java.util.List;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.test.model.Action;
import com.querydsl.core.types.Predicate;
@Repository
public interface ActionRepository extends PagingAndSortingRepository<Action, Long>, QuerydslPredicateExecutor<Action> {
@Override
List<Action> findAll(Predicate predicate);
}
QueryDSL谓词用法:
QAction action = QAction.action;
Predicate predicate = action.name.like("%Accept%");
List<Action> actions = actionRepository.findAll(predicate);
Q类是由预处理器正确生成的,编译成功,但在应用程序启动期间,我得到错误:org.springframework.data.repository.core.support.不支持片段异常:存储库com.atende.db.metadata.jdbcrepository.ActionRepostory实现org.springframework.data.querydsl.QuerydslPredicateExec的,但JdbcRepositoryWorks不支持Querydsl!
我的解决方案中还缺少什么?
当我在JdbcTemplate中直接使用QueryDSL时,它可以工作:
QAction action = QAction.action;
SQLTemplates dialect = new MySQLTemplates();
Connection connection = DataSourceUtils.getConnection(jdbcTemplate.getDataSource());
SQLQuery<String> query = new SQLQuery<>(connection, dialect);
List<Tuple> actions = query.select(action.id, action.name)
.from(action)
.where(action.name.like("%Action%"))
.fetch();
我也尝试使用Infobip querydsl库(https://github.com/infobip/infobip-spring-data-querydsl),但得到了同样的错误。
Spring Data JDBC不提供Querydsl支持。这意味着激活 spring-data-jdbc
存储库实现的@EnableJdbcRepositories
不提供 Querydsl 支持。
如果您在类路径上有Infobip-sping-data-jdbc-querydsl-boot-starter
并删除@EnableJdbcRepositori
它应该可以工作。QuerydslJdbcPredicateExec的
是片段实现。
这是对留档的曲解(不是你的错,它是以一种不幸的方式构造的)。
您正在查看前言,其中描述了使用 Spring 数据模块的一般方法。这并不表示手头的模块(在本例中为 JDBC)支持上述所有功能。
我创建了一个@RestController并映射了一个@PostMapping请求。 HTTP请求 模型类 我正在使用邮差作为其余的客户。 答复:
所以我在这篇文章中发现了错误。我尝试升级gradle,但在使用不受支持的gradle版本时出现了另一个错误,因此我返回到4.4.2版本。 现在,我知道这是另一个问题的重复,但这个问题仍然存在,并且在较新版本的gradle和idea中尚未解决。此外,我不想使用包装。 我收到的错误: Gradle版本:4.4.2 IntelliJ IDEA版本:2018.3.5 您可以在这里找到一个测试项目来重现该问
问题: 在我的应用程序中,我想通过cordova wkwebview访问图像。超文本标记语言元素如下所示。 加载时,我收到错误“加载资源失败:不支持的URL”。我正在使用iOS 10.2。 验证/尝试的事情: 如果选中文件夹“MyFolder”下的“cordova.file.dataDirectory”中存在的文件列表,我确实看到那里存在“file.jpg”。它的本机URL为文件:///var/m
我试图制作我的第一个应用程序(hello world),并在手机上运行它,但当我单击run时,gradle返回了这个错误(我在这里研究了stackoverflow并试图关闭即时运行,但在我的情况下似乎不起作用): 后来编辑2:我想通了,我的电脑上安装了一个旧的jdk版本和最新的android studio,谢谢你的帮助。我只需要安装最新的jdk版本(8)
我正在使用python向elasticsearch插入一些数据,elasticsearch版本是 从日期时间导入 日期时间 从 Elasticsearch 导入 Elasticsearch es = Elasticsearch( “localhost:9200” ) 从 Elasticsearch 导入 传输错误数据 = { “http_code” : “404”, “计数” : “10” } t
我有一个方法来计算< code > div 中元素的数量并返回它们的数目。 这是页面源代码 WebDriver引发以下错误:不支持复合类名。考虑搜索一个类名并过滤结果,或者使用CSS选择器。 编辑: 结果是< code>WerbDriver不支持类名中的空格,omg。 你们能帮我在这种情况下使用< code>CSS选择器来找到元素吗?