Spring Batch JpaPagingItemReader: how to set a query hint?

Andrea

I need help because I can't understand how I can set a query hint in the JpaPagingItemReader.

This is the reader definition:

<bean id="itemReader" class="org.springframework.batch.item.database.JpaPagingItemReader" scope="step"
    p:entityManagerFactory-ref="entityManagerFactoryOracle" 
    p:pageSize="${pageSize}" 
    p:queryString="SELECT t FROM test t">
</bean> 

I need to set an Oracle hint in the queryString but I can't find the right way to specify it.

If I set the hint like this

SELECT /*+ INDEX(t indexName) */ t FROM test t

I got this exception:

2018-09-14 08:28:16.035 [SimpleAsyncTaskExecutor-1] ERROR [org.hibernate.hql.internal.ast.ErrorCounter][reportError] - line 1:8: unexpected token: /
line 1:8: unexpected token: /
    at org.hibernate.hql.internal.antlr.HqlBaseParser.selectClause(HqlBaseParser.java:1245)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1022)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:730)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:323)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:186)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:279)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:342)
    at com.sun.proxy.$Proxy33.createQuery(Unknown Source)
    at org.springframework.batch.item.database.JpaPagingItemReader.createQuery(JpaPagingItemReader.java:112)
    at org.springframework.batch.item.database.JpaPagingItemReader.doReadPage(JpaPagingItemReader.java:203)
    at org.springframework.batch.item.database.AbstractPagingItemReader.doRead(AbstractPagingItemReader.java:108)
    at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.read(AbstractItemCountingItemStreamItemReader.java:88)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy36.read(Unknown Source)
    at org.springframework.batch.core.step.item.SimpleChunkProvider.doRead(SimpleChunkProvider.java:91)
    at org.springframework.batch.core.step.item.SimpleChunkProvider.read(SimpleChunkProvider.java:157)
    at org.springframework.batch.core.step.item.SimpleChunkProvider$1.doInIteration(SimpleChunkProvider.java:116)
    at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374)
    at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)
    at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)
    at org.springframework.batch.core.step.item.SimpleChunkProvider.provide(SimpleChunkProvider.java:110)
    at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:69)
    at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:406)
    at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:330)
    at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
    at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:271)
    at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:81)
    at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374)
    at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)
    at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)
    at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:257)
    at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:200)
    at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:139)
    at org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler$1.call(TaskExecutorPartitionHandler.java:136)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.lang.Thread.run(Thread.java:748)

Any idea?

Thanks a lot for your help.

Mahmoud Ben Hassine

If your JPA provider does not support hints to be defined inline in the queryString, you can configure the JpaPagingItemReader with a custom JpaQueryProvider instead of a queryString. This interface allows you to have control over the creation of the query that will be executed.

In your case, you can use the JpaNativeQueryProvider implementation which supports query hints. See its Javadoc.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Spring Batch JpaPagingItemReader Hangs

From Dev

Spring Batch JpaPagingItemReader Hangs

From Dev

Spring batch JpaPagingItemReader (possibly) removes rows from the database while using SELECT native query

From Dev

Spring batch jpaPagingItemReader why some rows are not read?

From Dev

Spring batch: alternative to JpaPagingItemReader which causes ORA-01555

From Dev

How to use index hint in this query?

From Dev

How to set "hint text" for spinner?

From Dev

How do I set JobParameters in spring batch with spring-boot

From Dev

How to use Oracle query hint in Hibernate

From Dev

How to use $hint in MongoDB aggregation query?

From Dev

How to use $query, $hint or $explain from Java

From Dev

How to set hint in Device Administrator of my application

From Dev

How to set the hint of autocomplete textview in android

From Dev

how to set text and image as a hint in edittext in center?

From Dev

How can set Hint Text in code?

From Dev

Spring Batch | MongoItemReader | How to pass JobParameters to mongo query?

From Dev

Spring Batch | MongoItemReader | How to pass JobParameters to mongo query?

From Dev

How to set the resource of MultiResourceItemWriter dynamically from ItemReader in Spring Batch

From Dev

Spring Batch - How to set RunIdIncrementer globally using JavaConfig

From Dev

Query batch job metadata in Spring batch

From Dev

Spring Batch: ItemProcessor query Database?

From Dev

spring batch dynamic query to itemreader

From Dev

How can I type hint a dynamically set class attribute in a metaclass?

From Dev

Can I set a password hint in Windows 8? If so, how?

From Dev

Using Query Hint on FOR XML

From Dev

Add a $hint to rmongodb query

From Dev

how to set maximum time for spring data mongo query

From Dev

Use a query that takes parameters in Spring Batch

From Dev

Set property value during launch in spring batch

Related Related

  1. 1

    Spring Batch JpaPagingItemReader Hangs

  2. 2

    Spring Batch JpaPagingItemReader Hangs

  3. 3

    Spring batch JpaPagingItemReader (possibly) removes rows from the database while using SELECT native query

  4. 4

    Spring batch jpaPagingItemReader why some rows are not read?

  5. 5

    Spring batch: alternative to JpaPagingItemReader which causes ORA-01555

  6. 6

    How to use index hint in this query?

  7. 7

    How to set "hint text" for spinner?

  8. 8

    How do I set JobParameters in spring batch with spring-boot

  9. 9

    How to use Oracle query hint in Hibernate

  10. 10

    How to use $hint in MongoDB aggregation query?

  11. 11

    How to use $query, $hint or $explain from Java

  12. 12

    How to set hint in Device Administrator of my application

  13. 13

    How to set the hint of autocomplete textview in android

  14. 14

    how to set text and image as a hint in edittext in center?

  15. 15

    How can set Hint Text in code?

  16. 16

    Spring Batch | MongoItemReader | How to pass JobParameters to mongo query?

  17. 17

    Spring Batch | MongoItemReader | How to pass JobParameters to mongo query?

  18. 18

    How to set the resource of MultiResourceItemWriter dynamically from ItemReader in Spring Batch

  19. 19

    Spring Batch - How to set RunIdIncrementer globally using JavaConfig

  20. 20

    Query batch job metadata in Spring batch

  21. 21

    Spring Batch: ItemProcessor query Database?

  22. 22

    spring batch dynamic query to itemreader

  23. 23

    How can I type hint a dynamically set class attribute in a metaclass?

  24. 24

    Can I set a password hint in Windows 8? If so, how?

  25. 25

    Using Query Hint on FOR XML

  26. 26

    Add a $hint to rmongodb query

  27. 27

    how to set maximum time for spring data mongo query

  28. 28

    Use a query that takes parameters in Spring Batch

  29. 29

    Set property value during launch in spring batch

HotTag

Archive