我想使用spring-batch
从postgres数据库中检索和处理数据。
我有一条有效的SQL语句,它将给我完整的结果集(约40万个条目):private static final String QUERY = "SELECT * FROM MyDataTable ";
现在,我想使用JpaPagingItemReader
以便以块的形式获取(并将数据写入其他位置):
JpaPagingItemReader<MyEntity> reader = new JpaPagingItemReader<>();
reader.setEntityManagerFactory(emf);
reader.setQueryString(QUERY);
但这不起作用:
[] 2014-09-17 16:31:58,234 ERROR : QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT * FROM my_data_table]
我也试过
SELECT FROM MyDataTable
和SELECT m FROM MyDataTable m
没有星号。结果相同。那么,如何使用spring-batch执行该
hql
查询?顺便说一句:该查询在pgAdmin之类的sql编辑器中运行良好。
最佳答案
SELECT m FROM MyDataTable m
几乎是正确的(只要您有实体调用JPQL
,它就是有效的MyDataTable
查询)。因此,似乎您没有名为MyDataTable
的实体类。
由于JpaPagingItemReader#setQueryString(String)
接受JPQL
查询,因此您应确保该表具有实体类,然后应使用其名称代替MyDataTable
。
顺便说一句-对于HQL
查询,有HibernatePagingItemReader。