Java 如何让Spring告诉我HQL查询有什么问题?

Java 如何让Spring告诉我HQL查询有什么问题?,java,spring,hibernate,tomcat,Java,Spring,Hibernate,Tomcat,我们使用DAO,DAO是Spring中扩展JpaRepository的接口。 现在我有一个对我来说似乎没问题的查询,但是部署失败了,并显示了一条非常普通的消息。我追溯到这个查询(见下文) 错误消息: Artifact artifact:war exploded: Error during artifact deployment. See server log for details. Tomcat过去常常在localhost.log和catalina.log中记录更多的细节,但现在它们仍然是

我们使用DAO,DAO是Spring中扩展JpaRepository的接口。 现在我有一个对我来说似乎没问题的查询,但是部署失败了,并显示了一条非常普通的消息。我追溯到这个查询(见下文)

错误消息:

 Artifact artifact:war exploded: Error during artifact deployment. See server log for details.
Tomcat过去常常在localhost.log和catalina.log中记录更多的细节,但现在它们仍然是空的,我无法找出哪个设置被更改,它们不再记录。日志设置对我来说似乎没问题

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler

# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE

# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE

# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE

# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE
以下是我的webapp的log4j.properties:

log4j.rootCategory=INFO, dest1
log4j.logger.com.mycompany.application=DEBUG, dest1
log4j.logger.com.mycompany.application.IndexingUtil=DEBUG, dest1
### log HQL query parser activity
log4j.logger.org.hibernate.hql.ast.AST=DEBUG

! Log to the console
log4j.appender.dest1=org.apache.log4j.ConsoleAppender
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern=%-5p %d{HH:mm:ss.SSS} [%-15.15t] [%-25.25c{1}] %m%n

! LOG TO A FILE
#log4j.appender.dest3=org.apache.log4j.RollingFileAppender
#log4j.appender.dest3.layout=org.apache.log4j.PatternLayout
#log4j.appender.dest3.layout.ConversionPattern=%-5p %d{EEE MMM dd HH:mm:ss.SSS zzz yyyy} [%-15.15t] [%-25.25c{1}] %m%n

! Specify the file name
#log4j.appender.dest3.File=/path_to_file...

! Control the maximum log file size
log4j.appender.dest3.MaxFileSize=3000KB
log4j.appender.dest3.MaxBackupIndex=50

#log4j.logger.org.springframework.security=DEBUG
有人能告诉我如何让Spring告诉我我的部署有什么问题吗

我把范围缩小到这个问题:

@Query(“从请求中选择r r加入获取r.categories c加入获取c.criteria d加入获取d.e其中r.id=:id”)
当我把它简化为这个时,它就工作了

@Query(“从请求中选择r,加入获取r.c,其中r.id=:id”)
实体类是简单类,它们之间的关系是简单的
@OneToMany
关系,集合类型为
java.util.List

我很困惑,看不出哪里出了问题。也许春天知道的更多。
据我所知,hibernate允许获取这样的层次结构,但迄今为止运气不佳。

log4j.appender.dest1=org.apache.log4j.ConsoleAppender
更改为FileAppender,您可以在日志文件中看到是什么happend@Jens这只是将输出从控制台重新路由到文件,但不会显示任何“新”内容。控制台输出是我得到错误消息的地方,它不包含ParsingException或Hibernate在发现非法查询时抛出的任何东西。为什么您知道这是一个与Hibernate相关的问题?它不是Hibernate就是Spring。坦率地说,我不知道是哪一个从注释中解析这些查询并检查它们的语法。但这肯定是一个疑问。我真的没有看到任何特别错误的地方。在这些情况下,我首先要返回到最简单的log4j配置,看看错误日志是否返回。若确实如此,那个么就是缓慢地将日志配置的位放回原处,直到它再次消失,那个么您就知道是什么触发了它。