postgresql – Spring Data返回List而不是List
我有关于
spring-data的DAO实现:
public interface TestDataRepository extends CrudRepository<DpConfigData,Long> { @Query(value = "select distinct(oid) from unit",nativeQuery = true) List<Long> testMethod(); } 和单元测试来测试被管理的DAO: @Test public void test(){ List<Long> testData = dpConfigDataEntityDataRepository.testMethod(); for (Long oid:testData){ System.out.print(oid); } } 运行测试给出奇怪的结果 – List< Long>运行时的testData由BigInteger实例填充,而不是由Long填充.结果我得到ClassCastException:java.math.BigInteger无法强制转换为java.lang.Long JPA实现 – Hibernate. 所以,我的问题是:这种奇怪行为的原因是什么?
这是Spring数据JPA的一个问题.
如果在DB中数据类型定义为BigInteger,并且在JPA查询中我们尝试获取为Long,则它不会给出任何错误,但它在Long数据类型中将值设置为BigInteger. 解决方案: >使用BigInteger作为返回类型 @Query(value =“从单元中选择distinct(oid)”,nativeQuery = true) 然后将变量设置如下. @Query(value =“从单元中选择distinct(oid)”,nativeQuery = true) 然后将值设置为 Long variable = Long.valueOf(stringValue); Long variable = dpConfigData.getOid(); 其中dpConfigData是Entity的对象(DpConfigData.class) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |