2016-06-07 132 views
0

試圖使用彈簧批次從DB中讀取數據和休眠讀者獲得org.hibernate.hql.internal.ast.QuerySyntaxException:結果不是[從結果]映射Spring Batch的休眠CursorItemReader

<import resource="/context-model.xml"/> 
<batch:job id="MainJob"> 
    <!-- File Load Step --> 

    <batch:step id="stepDataReadFromDB"> 
     <batch:tasklet> 
      <batch:chunk reader="DataReaderDB" processor ="" dummyProcessor" writer="dummyWriter" commit-interval="2"></batch:chunk> 
     </batch:tasklet> 
    </batch:step> 
</batch:job> 
<bean id="DataReaderDB" class="org.springframework.batch.item.database.HibernateCursorItemReader"> 
    <property name="sessionFactory" ref="sessionFactory" />   
<property name="queryString" value="from Result" /> 
<property name="useStatelessSession" value="false" /> 

</bean> 
<bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/> 
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
    <property name="jobRepository" ref="jobRepository"/> 
</bean> 
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="DataSource" /> 
    <property name="mappingLocations" value="classpath:META-INF/spring/batch/hibernate/*.hbm.xml" /> 
    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect"> org.hibernate.dialect.OracleDialect</prop> 
     <prop key="hibernate.show_sql">true</prop> 
     <prop key="hibernate.format_sql">true</prop> 
    </props> 
    </property> 
</bean> 


<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"/> 
<tx:annotation-driven transaction-manager="transactionManager"/> 


<bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/> 
    <property name="url" value="jdbc:oracle:thin:@******"/> 
    <property name="username" value="UN"/> 
    <property name="password" value="PW"/> 
    </bean> 

Hiber.hib .XML:

<hibernate-configuration> 
     <session-factory> 
      <mapping class="org.core.reader.Result"/> 
     </session-factory> 
    </hibernate-configuration> 

實體類

@Entity 
    @Table(name = "RESULT") 
    public class Result { 
    @Id 
    @Column(name = "SID", nullable = false) 
    int sID; 
@Column(name = "COLUMN1") 
     String studentName; 

我無法讀取DB.I需要數據使用與請求中的數據相對應的hibernate從Oracle獲取數據。我這樣配置,但得到上述錯誤

有人可以幫助我嗎?

我粘貼在配置文件的代碼片段之上。

回答

1

如果你的休眠配置文件被命名爲Hiber.hib.xml那麼肯定不會工作。將它重命名爲hibernate.cfg.xml

此外,我看你是基於註解的實體映射和基於實體映射的*.hbm.xml混合。不要這樣做,並嘗試使用一種方法。

+0

謝謝Shazin,工作,並在這裏添加包名** ** – Ravi