问题标签 [spring-data-commons]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - Spring boot 1.3.0 升级和 JPA 自定义方法不起作用
升级到 Spring Boot 版本 1.3.0.RELEASE 后,我在尝试启动时看到以下失败。
这是导致问题的代码的相关片段。没有对任何存储库或数据模型进行任何更改。
任何有关此问题的帮助将不胜感激。我尝试回到旧版本的 spring-data-common 但这不适用于新的 spring-data-jpa。
谢谢!
java - Spring Data Repositories - 查找列表中的 where 字段
我正在尝试使用PagingAndSortingRepository
带有find MyEntity where field in fieldValues
查询的spring,如下所示:
但没有成功。
我希望上述函数返回其字段与字段值之一匹配的所有实体,但它只返回空结果。
尽管这似乎是一种非常直接的能力,但我在文档中找不到任何对它的引用。
是/如何实现的?
谢谢。
spring-data - 带下划线的变量在派生查询方法(spring-data)中创建编译错误
带下划线的变量会创建错误,提示“描述资源路径位置类型无效的派生查询!找不到字符串类型的属性 _db!遍历的路径:Trnsction.ddate。...”
我有“spring-data-commons » 1.11.2.RELEASE”,在这个版本中,问题似乎得到了解决(https://jira.spring.io/browse/DATACMNS-569)但是在我的存储库类中,当我添加了一个如下所示的方法,尽管我转义了下划线,但它仍然无法编译。
我的变量的名称是ddate_db,它的类型是Date。
java - 为什么我不能构建 Spring Data Commons?
我正在尝试在我的机器上构建 spring-data-commons:
我做了以下事情:
我有:
我目前的设置:
java.util.Date.toInstant
此外,我可以在我的 jdk 中找到该方法。
更新:
这是mvn clean install -X
输出的一部分:
这与-target 1.6 -source 1.6
下面的片段有关吗?
spring-mvc - 无法将 @SortDefault 排序对象传递给控制器方法?
它在文档中@SortDefault
说明
定义在将 Sort 实例注入控制器处理程序方法时要使用的默认 Sort 选项的注释。
但事实是,我得到了这个例外:
无法实例化 [org.springframework.data.domain.Sort]:未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: org.springframework.data.domain.Sort.()
我在这里错过了什么吗?
postgresql - 由于 cachedCriteriaQuery 在 openjpa 2.4.1 上不正确,因此无法通过带有后缀 IN 的 spring-data-jpa 查询方法进行查询
更新:
在我深入研究了 spring-data-jpa 存储库查询方法的源代码后,我发现根本原因是PartTreeJpaQuerycreateQuery
的方法,如下所示。
该方法会在调用spring-data-jpa仓库查询方法接口时被RepositoryFactorySupport的QueryExecutorMethodInterceptor的invoke方法调用。
在第一次调用时,cachedCriteriaQuery
变量 willSELECT s FROM Subtask s WHERE (s.deviceId IN (:deviceIdList) AND s.state IN (:states)) ORDER BY s.id
和values
变量 is[[1000000002], [5, 10]]
都如预期的那样正确。
但是,在第二次调用时,cachedCriteriaQuery
isSELECT s FROM Subtask s WHERE (s.deviceId IN ('1000000002') AND s.state IN (5,10)) ORDER BY s.id
和 the values
is [[1000000003], [5]]
。看起来传递给 openjpa 和 jpa 查询的值是正确的,但criteriaQuery
不是。
如果我将openjpa
库更改为2.2.2版本,则每次调用此方法时,cachedCriteriaQuery
变量都是ALWAYS SELECT s FROM Subtask s WHERE (s.deviceId IN (:deviceIdList) AND s.state IN (:states)) ORDER BY s.id
。
为什么
cachedCriteriaQuery
变量会改变?它是 PartTreeJpaQuery 的 QueryPreparer 的私有和最终字段,唯一可以分配它的方法是 QueryPreparer 的构造函数。我已经在那里设置了一个断点,但是在第一次和第二次调用之间,我没有看到任何进程调用了这个构造函数,这个变量怎么会改变?
我所做的只是更改了 openjpa 库。
但上面的代码是 spring-data-jpa 和/或 spring-data-commons。这如何影响查询创建的行为?
给出如下单元测试代码,通过 and 字段查询子find IN
任务deviceId
实体state
。第一次查询是 find IN deviceId 1000000002
and, state 5
and 10
。第二次查询是 find IN deviceId1000000003
和 state 5
。
subtaskDaospring-data-jpa repository query method
接口如下
然而,结果如下,并不像我们预期的那样正确。第二次查询出来了,结果是 deviceId 的子任务,1000000002
而不是 deviceId 1000000003
。
根据 openjpa.Log,第一次查询(在第 7272 行)Query "SELECT s FROM Subtask s WHERE (s.deviceId IN (:deviceIdList) AND s.state IN (:states)) ORDER BY s.id"
。但在第二次,它查询Query "SELECT s FROM Subtask s WHERE (s.deviceId IN ('1000000002') AND s.state IN (5,10)) ORDER BY s.id"
. 为什么参数不是:deviceIdList
and :states
?
spring
我们使用的, spring-data-jpa
,jdbc driver
和libs的版本openjpa
如下, jdk 是1.8
, 数据库是PostgreSQL 9.4 windows version
.
实体类在构建时通过openjpa-maven-plugin
EntityManagerFactoryBean
设置persistence.xml
如下_
即使我将QueryCache和QuerySQLCache都设置为false,它仍然无法正常工作。
但是,如果我将库降级openjpa
为 version 2.2.2
,它完全适用于所有相同的 code 和 configuration。此外,如果我使用@Query
下面的 subtaskDao 接口,即使使用openjpa version 2.4.1
.
我没有发现的棘手问题是什么?
java - Spring Data Slice:getSize() 和 getNumberOfElements() 之间的区别
Spring Data 类getSize()
和in 有什么区别?getNumberOfElements
org.springframework.data.domain.Slice
Javadoc 在这里没有提供太多帮助。
range - Java,spring-data-commons,无法创建范围, 为什么?
JavaLocalDate
实现Comparable<ChronoLocalDate>
,但它应该已经实现Comparable<LocalDate>
以允许创建Range<LocalDate>
. 之所以如此,是因为声明是Range<T extends Comparable<T>>
:
spring-data-commons/src/main/java/org/springframework/data/domain/Range.java
问题是可以spring-data-commons
Range
有以下类声明:
这可能有助于创建Range<LocalDate>
.
java - 为什么 PropertyPath 构造函数中的 propertyName 不遵循 Javabeans 规范?
PropertyPath 类的构造函数中的变量 propertyName 的名称似乎不符合 JavaBeans 规范(8.8 推断名称的大写。)。
该代码意味着当名称与 ALL_UPPERCASE 不匹配时,第一个大写字母将更改为小写。
但是 JavaBeans 规范说:
例如:如果我在一个类中有一个名为 [MCount] 的属性,那么根据 JavaBeans 规范,属性名称应该是 [MCount]。但是如果我使用下面的 [PropertyPath.from](它将调用 PropertyPath 构造函数)来获取属性,我会得到以下异常,因为属性名称已更改为 [mCount]。
异常:java.lang.IllegalArgumentException:无法在此 ManagedType [类] 上找到具有给定名称 [mCount] 的属性...
有人有好的意见吗?谢谢!