0
我正在開發使用spring-boot,spring-batch應用程序,我正在使用HibernatePagingItemReader從源表讀取數據。當我運行代碼時,我得到了異常。以下是我的應用程序代碼。請注意,我在數據庫中的表名是「OLDUSER」,而我的實體名稱是「Olduser」。我已經使用了所有可能的建議,通過stackoverflow的類似的問題,但他們都沒有工作。 感謝您的幫助。HibernatePagingItemReader引發QuerySyntaxException表未映射
org.hibernate.hql.internal.ast.QuerySyntaxException: Olduser is not mapped [FROM Olduser o where o.id>=7501 and o.id <= 15000 order by o.id ASC]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:218)
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)
域類:Olduser.java:-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name="OLDUSER")
@Entity
public class Olduser {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="ID")
int id;
@Column(name="USERNAME")
String username;
@Column(name="PASSWORD")
String password;
@Column(name="AGE")
int age;
public Olduser(int id, String username, String password, int age) {
super();
this.id = id;
this.username = username;
this.password = password;
this.age = age;
}
ItemReader代碼: -
@Bean
@StepScope
public HibernatePagingItemReader<Olduser> hibernateUserItemReader(
@Value("#{stepExecutionContext[fromId]}") final String fromId,
@Value("#{stepExecutionContext[toId]}") final String toId,
@Value("#{stepExecutionContext[name]}") final String name) throws Exception {
LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
factoryBean.setDataSource(this.dataSource);
factoryBean.afterPropertiesSet();
SessionFactory sessionFactory = factoryBean.getObject();
HibernatePagingItemReader<Olduser> hibernateReader=new HibernatePagingItemReader<>();
hibernateReader.setFetchSize(chunkSize);
hibernateReader.setQueryString("FROM Olduser o where o.id>=" + fromId + " and o.id <= " + toId +" order by o.id ASC");
hibernateReader.setSessionFactory(sessionFactory);
hibernateReader.setUseStatelessSession(false);
hibernateReader.setSaveState(false);
hibernateReader.afterPropertiesSet();
return hibernateReader;
}
檢查答案爲:https:/ /stackoverflow.com/questions/18629702/org-hibernate-mappingexception-unknown-entity-in-spring-or m @ noredirect = 1&lq = 1對你的問題有好處 –
嗨@LucaBassoRicci,感謝您的幫助,我已經找到了問題的解決方案。我已經添加了註釋包並且還必須添加bean JPATransactionManager來管理LocalSessionFactoryBean事務。我現在將發佈完整的解決方案。 – Abhilash