Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fac' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: must specify an identifier type:
嚴重: Servlet.service() for servlet default threw exception
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
?at org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1182)
?at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:692)
?at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
?at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
?at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:690)
?at com.ambow.ExamOnlineSystem.dao.ExamDaoImpl.add(ExamDaoImpl.java:18)
?at com.ambow.ExamOnlineSystem.entity.question.service.QuestionServiceImpl.save(QuestionServiceImpl.java:22)
?at com.ambow.ExamOnlineSystem.entity.question.action.QuestionAddAction.save(QuestionAddAction.java:39)
?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
?at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
?
解決:
修改web.xml中的] <param-value>false </param-value>為false試試!
<
filter
>
?
<
filter-name
>
hibernateFilter?
</
filter-name
>
?
<
filter-class
>
?
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter?
</
filter-class
>
?
<
init-param
>
?
<
param-name
>
singleSession?
</
param-name
>
?
<
param-value
>
false?
</
param-value
>
?
</
init-param
>
?
</
filter
>
java.lang.IllegalArgumentException: node to traverse cannot be null!
?at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:31)
?at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:254)
?at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
?at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
?at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
?at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
?at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
?at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
?at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
?at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
問題解決:
出現這種問題是因為HQL語句出現問題,引起內部查詢對象為空,無法處理為空值引起的。解決方法,檢查HQL語句(尤其是關鍵字)。