java.lang.NullPointerException at org.hibernate.hql.internal.NameGenerator.generateColumnNames(NameGenerator.java:27)

huangapple go评论92阅读模式
英文:

java.lang.NullPointerException at org.hibernate.hql.internal.NameGenerator.generateColumnNames(NameGenerator.java:27)

问题

这个问题看起来是一个Java Hibernate的异常,具体是"java.lang.NullPointerException"。它似乎与查询中的某些配置有关。你可能需要检查你的Criteria查询和实体映射是否正确配置,以确保它们符合预期。如果你能提供更多关于你的数据模型和查询的信息,我可能能够提供更具体的帮助。

英文:

I have a problem while doing the CriteriaAPI multiselect from Join using the CriteriaBuilder.function ("group_concat") with the following entities and queries:

  1. CriteriaBuilder cb = entityManager.getCriteriaBuilder();
  2. CriteriaQuery<RegistryGroupRow> c = cb.createQuery(RegistryGroupRow.class);
  3. Root<RegistryGroupEntity> registryGroup = c.from(RegistryGroupEntity.class);
  4. Join<RegistryGroupEntity, ServiceEntity> serviceJoin = registryGroup.join(RegistryGroupEntity_.services, JoinType.INNER);
  5. c.multiselect(registryGroup.get(RegistryGroupEntity_.id),
  6. registryGroup.get(RegistryGroupEntity_.name),
  7. cb.function("group_concat", String.class, serviceJoin.get(ServiceEntity_.name), cb.literal(true),
  8. cb.literal(", "), serviceJoin.get(ServiceEntity_.name),
  9. cb.literal("DESC")).alias("name"));
  10. c.where().groupBy(registryGroup.get(RegistryGroupEntity_.name));
  11. c.orderBy(cb.desc(registryGroup.get(RegistryGroupEntity_.id)));
  12. List<Predicate> criteria = getRegistryGroupPredicates(cb, registryGroup, filter, c);
  13. if (criteria.size() == 1) {
  14. c.where(criteria.get(0));
  15. } else if (criteria.size() > 0) {
  16. c.where(cb.and(criteria.toArray(new Predicate[0])));
  17. }
  18. TypedQuery<RegistryGroupRow> q = entityManager.createQuery(c);
  19. Map<String, Object> paramValues = getRegistryGroupParamValues(filter);
  20. for (String name : paramValues.keySet()) {
  21. q.setParameter(name, paramValues.get(name));
  22. }
  23. if (offset != null) {
  24. q.setFirstResult(offset);
  25. }
  26. if (limit != null) {
  27. q.setMaxResults(limit);
  28. }
  29. return q.getResultList();
  30. @Entity
  31. @Table(name = "registry_groups")
  32. public class RegistryGroupEntity {
  33. @Id
  34. @SequenceGenerator(name="registry_groups_gen", sequenceName="registry_groups_id_seq", allocationSize = 1)
  35. @GeneratedValue(generator="registry_groups_gen")
  36. private Integer id;
  37. @Column(name = "name")
  38. private String name;
  39. @OneToMany(mappedBy = "registryGroup")
  40. private Collection<ServiceEntity> services;
  41. //setters-getters ommited
  42. }
  43. @Entity
  44. @Table(name = "services")
  45. public class ServiceEntity {
  46. @Id
  47. @SequenceGenerator(name="service_gen", sequenceName="services_id_seq", allocationSize = 1)
  48. @GeneratedValue(generator="service_gen")
  49. private Integer id;
  50. @Column(nullable = false, length = 100)
  51. private String name;
  52. @Column(name = "registry_group_id", insertable = false, updatable = false)
  53. private Integer registryGroupId;
  54. }

So, when the query is executed, it fails with:

  1. SEVERE:
  2. java.lang.NullPointerException
  3. at org.hibernate.hql.internal.NameGenerator.generateColumnNames(NameGenerator.java:27)
  4. at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.generateColumnNames(SessionFactoryHelper.java:418)
  5. at org.hibernate.hql.internal.ast.tree.SelectClause.initializeColumnNames(SelectClause.java:269)
  6. at org.hibernate.hql.internal.ast.tree.SelectClause.finishInitialization(SelectClause.java:259)
  7. at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:254)
  8. at org.hibernate.hql.internal.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:1011)
  9. at org.hibernate.hql.internal.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:779)
  10. at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:675)
  11. at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:311)
  12. at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:259)
  13. at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:261)
  14. at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189)
  15. at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:141)
  16. at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
  17. at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
  18. at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153)
  19. at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:545)
  20. at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:654)
  21. at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:3307)
  22. at org.hibernate.query.criteria.internal.CriteriaQueryImpl$1.buildCompiledQuery(CriteriaQueryImpl.java:318)
  23. at org.hibernate.query.criteria.internal.compile.CriteriaCompiler.compile(CriteriaCompiler.java:127)
  24. at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:3600)
  25. at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:203)
  26. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  27. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  28. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  29. at java.base/java.lang.reflect.Method.invoke(Method.java:567)
  30. at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:301)
  31. at com.sun.proxy.$Proxy111.createQuery(Unknown Source)
  32. at com.openpayment.impl.dao.RegistryGroupDaoImpl.getRegistryGroupRows(RegistryGroupDaoImpl.java:247)
  33. at com.openpayment.impl.service.RegistryGroupServiceImpl.getRegistryGroupRows(RegistryGroupServiceImpl.java:67)
  34. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  35. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  36. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  37. at java.base/java.lang.reflect.Method.invoke(Method.java:567)
  38. at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
  39. at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
  40. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
  41. at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)
  42. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
  43. at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
  44. at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:283)
  45. at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
  46. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
  47. at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
  48. at com.sun.proxy.$Proxy174.getRegistryGroupRows(Unknown Source)
  49. at com.openpayment.web.view.registry.RegistryGroupView.lambda$buildTable$7f718060$1(RegistryGroupView.java:167)
  50. at com.vaadin.data.provider.CallbackDataProvider.fetchFromBackEnd(CallbackDataProvider.java:137)
  51. at com.vaadin.data.provider.AbstractBackEndDataProvider.fetch(AbstractBackEndDataProvider.java:61)
  52. at com.vaadin.data.provider.DataCommunicator.fetchItemsWithRange(DataCommunicator.java:404)
  53. at com.vaadin.data.provider.DataCommunicator.sendDataToClient(DataCommunicator.java:377)
  54. at com.vaadin.data.provider.DataCommunicator.beforeClientResponse(DataCommunicator.java:339)
  55. at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:126)
  56. at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:124)
  57. at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92)
  58. at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
  59. at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1606)
  60. at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:448)
  61. at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
  62. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
  63. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  64. at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
  65. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
  66. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  67. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
  68. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
  69. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
  70. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
  71. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
  72. at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
  73. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
  74. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
  75. at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
  76. at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
  77. at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
  78. at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
  79. at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
  80. at java.base/java.lang.Thread.run(Thread.java:835)

In

  1. generateColumnNames:25, NameGenerator (org.hibernate.hql.internal)
  2. generateColumnNames:418, SessionFactoryHelper (org.hibernate.hql.internal.ast.util)
  3. initializeColumnNames:269, SelectClause (org.hibernate.hql.internal.ast.tree)
  4. finishInitialization:259, SelectClause (org.hibernate.hql.internal.ast.tree)
  5. initializeExplicitSelectClause:254, SelectClause (org.hibernate.hql.internal.ast.tree)
  6. useSelectClause:1011, HqlSqlWalker (org.hibernate.hql.internal.ast)
  7. processQuery:779, HqlSqlWalker (org.hibernate.hql.internal.ast)
  8. query:675, HqlSqlBaseWalker (org.hibernate.hql.internal.antlr)
  9. selectStatement:311, HqlSqlBaseWalker (org.hibernate.hql.internal.antlr)
  10. statement:259, HqlSqlBaseWalker (org.hibernate.hql.internal.antlr)
  11. analyze:261, QueryTranslatorImpl (org.hibernate.hql.internal.ast)
  12. doCompile:189, QueryTranslatorImpl (org.hibernate.hql.internal.ast)
  13. compile:141, QueryTranslatorImpl (org.hibernate.hql.internal.ast)
  14. <init>:115, HQLQueryPlan (org.hibernate.engine.query.spi)
  15. <init>:77, HQLQueryPlan (org.hibernate.engine.query.spi)
  16. getHQLQueryPlan:153, QueryPlanCache (org.hibernate.engine.query.spi)
  17. getQueryPlan:545, AbstractSharedSessionContract (org.hibernate.internal)
  18. createQuery:654, AbstractSharedSessionContract (org.hibernate.internal)
  19. createQuery:3307, SessionImpl (org.hibernate.internal)
  20. buildCompiledQuery:318, CriteriaQueryImpl$1 (org.hibernate.query.criteria.internal)
  21. compile:127, CriteriaCompiler (org.hibernate.query.criteria.internal.compile)
  22. createQuery:3600, SessionImpl (org.hibernate.internal)
  23. createQuery:203, SessionImpl (org.hibernate.internal)
  24. invoke0:-1, NativeMethodAccessorImpl (jdk.internal.reflect)
  25. invoke:62, NativeMethodAccessorImpl (jdk.internal.reflect)
  26. invoke:43, DelegatingMethodAccessorImpl (jdk.internal.reflect)
  27. invoke:567, Method (java.lang.reflect)
  28. invoke:301, SharedEntityManagerCreator$SharedEntityManagerInvocationHandler (org.springframework.orm.jpa)
  29. createQuery:-1, $Proxy111 (com.sun.proxy)
  30. getRegistryGroupRows:247, RegistryGroupDaoImpl (com.openpayment.impl.dao)
  31. getRegistryGroupRows:67, RegistryGroupServiceImpl (com.openpayment.impl.service)
  32. invoke0:-1, NativeMethodAccessorImpl (jdk.internal.reflect)
  33. invoke:62, NativeMethodAccessorImpl (jdk.internal.reflect)
  34. invoke:43, DelegatingMethodAccessorImpl (jdk.internal.reflect)
  35. invoke:567, Method (java.lang.reflect)
  36. invokeJoinpointUsingReflection:333, AopUtils (org.springframework.aop.support)
  37. invokeJoinpoint:190, ReflectiveMethodInvocation (org.springframework.aop.framework)
  38. proceed:157, ReflectiveMethodInvocation (org.springframework.aop.framework)
  39. invoke:69, MethodSecurityInterceptor (org.springframework.security.access.intercept.aopalliance)
  40. proceed:179, ReflectiveMethodInvocation (org.springframework.aop.framework)
  41. proceedWithInvocation:99, TransactionInterceptor$1 (org.springframework.transaction.interceptor)
  42. invokeWithinTransaction:283, TransactionAspectSupport (org.springframework.transaction.interceptor)
  43. invoke:96, TransactionInterceptor (org.springframework.transaction.interceptor)
  44. proceed:179, ReflectiveMethodInvocation (org.springframework.aop.framework)
  45. invoke:213, JdkDynamicAopProxy (org.springframework.aop.framework)
  46. getRegistryGroupRows:-1, $Proxy174 (com.sun.proxy)
  47. lambda$buildTable$7f718060$1:167, RegistryGroupView (com.openpayment.web.view.registry)
  48. fetch:-1, 1332458831 (com.openpayment.web.view.registry.RegistryGroupView$$Lambda$332)
  49. fetchFromBackEnd:137, CallbackDataProvider (com.vaadin.data.provider)
  50. fetch:61, AbstractBackEndDataProvider (com.vaadin.data.provider)
  51. fetchItemsWithRange:404, DataCommunicator (com.vaadin.data.provider)
  52. sendDataToClient:377, DataCommunicator (com.vaadin.data.provider)
  53. beforeClientResponse:339, DataCommunicator (com.vaadin.data.provider)
  54. write:126, UidlWriter (com.vaadin.server.communication)
  55. writeUidl:124, UidlRequestHandler (com.vaadin.server.communication)
  56. synchronizedHandleRequest:92, UidlRequestHandler (com.vaadin.server.communication)
  57. handleRequest:40, SynchronizedRequestHandler (com.vaadin.server)
  58. handleRequest:1606, VaadinService (com.vaadin.server)
  59. service:448, VaadinServlet (com.vaadin.server)
  60. service:728, HttpServlet (javax.servlet.http)
  61. internalDoFilter:305, ApplicationFilterChain (org.apache.catalina.core)
  62. doFilter:210, ApplicationFilterChain (org.apache.catalina.core)
  63. doFilter:51, WsFilter (org.apache.tomcat.websocket.server)
  64. internalDoFilter:243, ApplicationFilterChain (org.apache.catalina.core)
  65. doFilter:210, ApplicationFilterChain (org.apache.catalina.core)
  66. invoke:222, StandardWrapperValve (org.apache.catalina.core)
  67. invoke:123, StandardContextValve (org.apache.catalina.core)
  68. invoke:502, AuthenticatorBase (org.apache.catalina.authenticator)
  69. invoke:171, StandardHostValve (org.apache.catalina.core)
  70. invoke:100, ErrorReportValve (org.apache.catalina.valves)
  71. invoke:953, AccessLogValve (org.apache.catalina.valves)
  72. invoke:118, StandardEngineValve (org.apache.catalina.core)
  73. service:408, CoyoteAdapter (org.apache.catalina.connector)
  74. process:1041, AbstractHttp11Processor (org.apache.coyote.http11)
  75. process:603, AbstractProtocol$AbstractConnectionHandler (org.apache.coyote)
  76. run:312, JIoEndpoint$SocketProcessor (org.apache.tomcat.util.net)
  77. runWorker:1128, ThreadPoolExecutor (java.util.concurrent)
  78. run:628, ThreadPoolExecutor$Worker (java.util.concurrent)
  79. run:835, Thread (java.lang)

it has been turned out, that Types array is a size of 3, but have only two values, the Integer one and the String one.

java.lang.NullPointerException at org.hibernate.hql.internal.NameGenerator.generateColumnNames(NameGenerator.java:27)

答案1

得分: 1

已经证明,Types数组的大小为3,但只有两个值,一个是整数,一个是字符串。

英文:

it has been turned out, that Types array is a size of 3, but vae only two values, the Integer one and the String one.

huangapple
  • 本文由 发表于 2023年4月13日 20:18:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/76005348.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定