2016-11-17 4 views
0

Ich benutze SpringData JPARepository, um Daten aus MySql und MsSql Datenbanken zu lesen.Wenn ich versuche, das Ergebnis einer Abfrage als Liste zu erhalten. es funktioniert völlig in OrdnungSpringData JPARepository Stream MySql/MsSql NPE

List<Employee> findByEmployeeId(String employeeId); 

Aber wenn ich versuche als Stream-

Stream<Employee> findByEmployeeId(String employeeId); 

ich NPE bekommen zu bekommen. Aber das passiert intermittierend.

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] 

Aber mit MongoRepository habe ich nie ein Problem selbst mit großen Ergebnissen.

Bitte lassen Sie mich wissen Wenn ich etwas hier vermisse.

Dank

Antwort

0

Haben Sie versucht, eine @Query Anmerkung mit der Abfrage auf der Repository-Methode setzen? Alle Abfragen, die ich selbst gesehen und benutzt habe und die als Rückgabetyp "Stream" hatten, haben die Annotation verwendet.

wie dies für Ihr Beispiel:

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

Hallo, Zuerst habe ich versucht, mit @Query nur. Aber hat nicht funktioniert. – pvpkiran