我创建了两个实体,并试图在加载后用数据填充其中一个,以将其显示为下拉列表。
我得到了错误
org.hibernate.exception.SQLGrammarException:无法准备语句
Group
必须在下拉列表中的实体是:
@Entity
@Table(name="GROUP")
public class Group implements Serializable,Lifecycle{
/**
*
*/
private static final long serialVersionUID = 5551707547269388327L;
@Id
@Column(name="ID")
@GeneratedValue
private int id;
@Column(name="E_NAME")
private String eName;
@Column(name="A_NAME")
private String aName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String geteName() {
return eName;
}
public void seteName(String eName) {
this.eName = eName;
}
public String getaName() {
return aName;
}
public void setaName(String aName) {
this.aName = aName;
}
@Override
public boolean onDelete(Session arg0) throws CallbackException {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLoad(Session session, Serializable arg1) {
// TODO Auto-generated method stub
Group adminGroup =new Group();
Group sectionAdminGroup =new Group();
Group userGroup =new Group();
adminGroup.seteName("Admin");
sectionAdminGroup.seteName("Section Admin");
userGroup.seteName("User");
adminGroup.setaName("مسشرف عام");
sectionAdminGroup.setaName("مشرف قطاع");
userGroup.setaName("مستخدم");
session.save(adminGroup);
session.save(sectionAdminGroup);
session.save(userGroup);
}
@Override
public boolean onSave(Session arg0) throws CallbackException {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onUpdate(Session arg0) throws CallbackException {
// TODO Auto-generated method stub
return false;
}
}
堆栈跟踪是:
由以下原因引起:
org.hibernate.exception.SQLGrammarException:无法在 org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 在 org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)在 org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 在 org.hibernate.engine.jdbc.internal.StatementPreparerImpl\(StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:196) 在 org.hibernate.engine .jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:160) 在 org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1884) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1861) 在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) 在 org.hibernate.loader.Loader.doQuery(Loader.java:909) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354)在 org.hi bernate.loader.Loader.doList(Loader.java:2551) 在 org.hibernate.loader.Loader.doList(Loader.java:2537) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2367) 在 org .hibernate.loader.Loader.list(Loader.java:2362) 在 org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126) 在 org.hibernate.internal.SessionImpl.list(SessionImpl.java:1678) ) 在 org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380) 在 org.gaca.gms.dao.GenericDAOImpl.getAll(GenericDAOImpl.java:56) 在 org.gaca.gms.services.GenericServiceImpl.getAllObjects( GenericServiceImpl.java:61) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java .lang.reflect.Method.invoke(Method.java:483) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 在 org.springframework.aop.fram ework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)在 org.springframework.transaction.interceptor.TransactionInterceptor\)1.proceedWithInvocation(TransactionInterceptor.java:98 ) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在 org.springframework.aop.framework.ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:179)在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)在 com.sun.proxy.\(Proxy39.getAllObjects(未知来源)在 org.gaca.gms.controllers .UsersController.listUsers(UsersController.java:43) 在 org.gaca.gms.controllers.UsersController\)\(FastClassBySpringCGLIB\)\(29260f80.invoke() 在 org.springfra mework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 在 org.springframework.aop.framework.CglibAopProxy\)CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:157) 在 org.springframework.transaction.interceptor.TransactionInterceptor\(1.proceedWithInvocation(TransactionInterceptor.java:98) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 在 org.springframework。 transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.framework.CglibAopProxy\)DynamicAdvisedInterceptor.intercept(CglibAopProxy. java:644) 在 org.gaca.gms.controllers.UsersController$\(EnhancerBySpringCGLIB\)\(de07b585.listUsers() 在 sun.reflect.NativeMethodAccessorImpl.inv oke0(本机方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在 java.lang.reflect.Method.invoke(Method.java: 483) 在 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 在 org.springframework.web .servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 在 org.webspringframework .servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter. java:83) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 在 org.springframework.web.servlet .FrameworkServlet.processRequest(FrameworkServlet.java:961) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 org. springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler .handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) 在 org.mortbay.jetty.webapp.WebAp pContext.handle(WebAppContext.java:405) 在 org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) 在 org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 在 org .mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在 org.mortbay.jetty.Server.handle(Server.java:324) 在 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) ) 在 org.mortbay.jetty.HttpConnection\)RequestHandler.headerComplete(HttpConnection.java:829) 在 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) 在 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser. java:211) 在 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 在 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 在 org.mortbay.thread.QueuedThreadPool\(PoolThread .run(QueuedThreadPool.java:488) Caused by: org.h2.jdbc.JdbcSQLException: SQL 语句中的语法错误“SELECT THIS_.ID AS ID1_0_0_, THIS_.A_NAME AS A_NAME2_0_0 _, THIS_.E_NAME AS E_NAME3_0_0_ FROM GROUP\[\*\] THIS_ ";预期的“标识符”; SQL语句:select this_.ID as ID1_0_0_, this_.A_NAME as A_NAME2_0_0_, this_.E_NAME as E_NAME3_0_0_ from GROUP this_ \[42001-178\] at org.h2.message.DbException.getJdbcSQLException(DbException.java:344) at org.h2 .message.DbException.getSyntaxError(DbException.java:204) 在 org.h2.command.Parser.readIdentifierWithSchema(Parser.java:3024) 在 org.h2.command.Parser.readTableFilter(Parser.java:1185) 在 org. h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1859) 在 org.h2.command.Parser.parseSelectSimple(Parser.java:1968) 在 org.h2.command.Parser.parseSelectSub(Parser.java:1853) 在 org .h2.command.Parser.parseSelectUnion(Parser.java:1674) 在 org.h2.command.Parser.parseSelect(Parser.java:1662) 在 org.h2.command.Parser.parsePrepared(Parser.java:434) org.h2.command.Parser.parse(Parser.java:306) 在 org.h2.command.Parser.parse(Parser.java:278) 在 org.h2.command.Parser.prepareCommand(Parser.java:243)在 org.h2.engine.Session.prepareLocal(Session.java:442) 在 org.h2.engine.Session.prepareCo命令(Session.java:384)在 org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1188)在 org.h2.jdbc.JdbcPreparedStatement。(JdbcPreparedStatement.java:73)在 org.h2.jdbc.JdbcConnection。 org.apache.commons.dbcp.DelegatingConnection.prepareStatement(JdbcConnection.java:276) 在 org.apache.commons.dbcp.PoolingDataSource\)PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313) 在 org .hibernate.engine.jdbc.internal.StatementPreparerImpl\(5.doPrepare(StatementPreparerImpl.java:162) 在 org.hibernate.engine.jdbc.internal.StatementPreparerImpl\)StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) … 73 更多
由以下原因引起:
org.h2.jdbc.JdbcSQLException:SQL 语句中的语法错误“SELECT THIS_.ID AS ID1_0_0_,THIS_.A_NAME AS A_NAME2_0_0_,THIS_.E_NAME AS E_NAME3_0_0_ FROM GROUP[*] THIS_”;预期的“标识符”; SQL语句:select this_.ID as ID1_0_0_, this_.A_NAME as A_NAME2_0_0_, this_.E_NAME as E_NAME3_0_0_ from GROUP this_ [42001-178] at org.h2.message.DbException.getJdbcSQLException(DbException.java:344) at org.h2 .message.DbException.getSyntaxError(DbException.java:204) 在 org.h2.command.Parser.readIdentifierWithSchema(Parser.java:3024) 在 org.h2.command.Parser.readTableFilter(Parser.java:1185) 在 org. h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1859) 在 org.h2.command.Parser.parseSelectSimple(Parser.java:1968) 在 org.h2.command.Parser.parseSelectSub(Parser.java:1853) 在 org .h2.command.Parser.parseSelectUnion(Parser.java:1674) 在 org.h2.command.Parser.parseSelect(Parser.java:1662) 在 org.h2.command.Parser.parsePrepared(Parser.java:434) org.h2.command.Parser.parse(Parser.java:306) 在 org.h2.command.Parser.parse(Parser.java:278) 在 org.h2.command.Parser.prepareCommand(Parser.java:243)在 org.h2.engine.Session.prepareLocal(Session.java:442) 在 org.h2.engine.Session.prepareCo命令(Session.java:384)在 org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1188)在 org.h2.jdbc.JdbcPreparedStatement。(JdbcPreparedStatement.java:73)在 org.h2.jdbc.JdbcConnection。 org.apache.commons.dbcp.DelegatingConnection.prepareStatement(JdbcConnection.java:276) 在 org.apache.commons.dbcp.PoolingDataSource\(PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313) 在 org .hibernate.engine.jdbc.internal.StatementPreparerImpl\)5.doPrepare(StatementPreparerImpl.java:162) 在 org.hibernate.engine.jdbc.internal.StatementPreparerImpl\(StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186) 在 org.hibernate.engine。 jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:160) 在 org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1884) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1861) 在 org .hibernate.loader.Loader.executeQueryStatement( Loader.java:1838) 在 org.hibernate.loader.Loader.doQuery(Loader.java:909) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 在 org.hibernate.loader.Loader.doList (Loader.java:2551) 在 org.hibernate.loader.Loader.doList(Loader.java:2537) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2367) 在 org.hibernate.loader.Loader。列表(Loader.java:2362)在 org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126)在 org.hibernate.internal.SessionImpl.list(SessionImpl.java:1678)在 org.hibernate.internal .CriteriaImpl.list(CriteriaImpl.java:380) 在 org.gaca.gms.dao.GenericDAOImpl.getAll(GenericDAOImpl.java:56) 在 org.gaca.gms.services.GenericServiceImpl.getAllObjects(GenericServiceImpl.java:61) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在 java .lang.reflect.Method.invoke(Method.java:483) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java :190) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 在 org.springframework.transaction.interceptor.TransactionInterceptor\)1.proceedWithInvocation(TransactionInterceptor.java:98) 在 org.springframework.transaction.interceptor .TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 在 com.sun.proxy.\(Proxy39.getAllObjects(Unknown Source) 在 org.gaca。 gms.controllers.UsersController.listUsers(UsersController.java:43) 在 org.gaca.gms.controllers.UsersController\)\(FastClassBySpringCGLIB\)\(29260f80.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java :204) 在 org.springframework.aop.framework.CglibAopProxy\)CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 在 org.springframework.transaction。 interceptor.TransactionInterceptor\(1.proceedWithInvocation(TransactionInterceptor.java:98) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) ) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.framework.CglibAopProxy\)DynamicAdvisedIntercep tor.intercept(CglibAopProxy.java:644) 在 org.gaca.gms.controllers.UsersController$\(EnhancerBySpringCGLIB\)\(de07b585.listUsers() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 org.springframework.web.method.support。 InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:104) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAda pter.handleInternal(RequestMappingHandlerAdapter.java:689) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 938)在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) .doGet(FrameworkServlet.java:852) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:820) 在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay。 jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) 在 org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) 在 org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 在 org.mortbay.jetty.handler.HandlerWrapper .handle(HandlerWrapper.java:152) 在 org.mortbay.jetty.Server.handle(Server.java:324) 在 org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 在 org.mortbay.jetty。 HttpConnection\)RequestHandler.headerComplete(HttpConnection.java:829) 在 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) 在 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 在 org.mortbay .jetty.HttpConnection.handle(HttpConnection.java:380) 在 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 在 org.mortbay.thread.QueuedThreadPool$ PoolThread.run(QueuedThreadPool.java:488)
这是我的 Spring 控制器:
@SuppressWarnings("unchecked")
@RequestMapping(method=RequestMethod.GET)
public String listUsers(Map<String, Object> map) {
map.put("user", new User());
map.put("usersList", usersService.getAllObjects(User.class));
map.put("groupsList", usersService.getAllObjects(Group.class));
return "index";
}
这是我的 JSP 页面:
<tr>
<td>groups</td>
<td><form:select path="selectedGroup">
<form:options items="${groupsList}"/>
</form:select></td>
</tr>
我是新来的。有人可以帮忙吗?
原文由 Dunken 发布,翻译遵循 CC BY-SA 4.0 许可协议
您使用的表名
GROUP
是 h2 数据库的保留关键字。使用类似ADMIN_GROUP
的名称重命名您的表。这是 h2 文档 的摘录: