2016-11-17 75 views
0

我正在使用SpringData JPARepository从MySql和MsSql数据库中读取数据。当我尝试以List的形式获取查询结果时。它完美罚款SpringData JPARepository Stream MySql/MsSql NPE

List<Employee> findByEmployeeId(String employeeId); 

但是,当我试图让作为流

Stream<Employee> findByEmployeeId(String employeeId); 

我得到NPE。但是这种情况是间歇性的。

java.lang.NullPointerException: null 
    at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1044) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] 
    at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2580) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] 
    at com.zaxxer.hikari.pool.HikariProxyResultSet.getInt(HikariProxyResultSet.java) ~[HikariCP-2.4.3.jar!/:na] 
    at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$2.doExtract(IntegerTypeDescriptor.java:73) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2969) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1696) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1628) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.loader.Loader.getRow(Loader.java:1515) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:726) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:696) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.loader.Loader.loadSingleRow(Loader.java:392) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.internal.ScrollableResultsImpl.prepareCurrentRow(ScrollableResultsImpl.java:237) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.hibernate.internal.ScrollableResultsImpl.next(ScrollableResultsImpl.java:121) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final] 
    at org.springframework.data.jpa.provider.PersistenceProvider$HibernateScrollableResultsIterator.hasNext(PersistenceProvider.java:396) ~[spring-data-jpa-1.9.2.RELEASE.jar!/:na] 
    at java.util.Iterator.forEachRemaining(Iterator.java:115) ~[na:1.8.0_66] 
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[na:1.8.0_66] 
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_66] 
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_66] 
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_66] 
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_66] 
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_66] 

但是使用MongoRepository我从来没有问题,即使有巨大的结果。

请让我知道如果我在这里失去了一些东西。

谢谢

回答

0

你有没有试过把@Query注释与存储库方法上的查询?我已经看到并使用过自己的Stream作为返回类型的所有查询都使用了它的注释。

像这样的例子:

@Query(value = "select e from Employee e where e.employeeId = :employeeId) 
Stream<Employee> findByEmployeeId(String employeeId) 
+0

你好,首先我想只有@Query。但没有奏效。 – pvpkiran