Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IntelliJ+Spring:如何在HQL查询中启用表名检查?_Spring_Hibernate_Jpa_Intellij Idea - Fatal编程技术网

IntelliJ+Spring:如何在HQL查询中启用表名检查?

IntelliJ+Spring:如何在HQL查询中启用表名检查?,spring,hibernate,jpa,intellij-idea,Spring,Hibernate,Jpa,Intellij Idea,我在项目中使用SpringBoot1.4.2和Hibernate和JPA。我使用IntelliJ Community 2016.2.4,与我的同事相同。不同之处在于,当他在HQL中键入某些内容时,即@QuerySELECT id FROM usesrs,它会根据实际的数据库结构自动检查表名-没有usesrs表,但有一个用户表。因此,除非他纠正,否则他的项目不会编译-这是一个多么美妙的特性啊!有时候我花了很多时间去发现这些虫子 您能告诉我如何在IntelliJ中启用此功能吗?我尝试的是: 1当我转

我在项目中使用SpringBoot1.4.2和Hibernate和JPA。我使用IntelliJ Community 2016.2.4,与我的同事相同。不同之处在于,当他在HQL中键入某些内容时,即@QuerySELECT id FROM usesrs,它会根据实际的数据库结构自动检查表名-没有usesrs表,但有一个用户表。因此,除非他纠正,否则他的项目不会编译-这是一个多么美妙的特性啊!有时候我花了很多时间去发现这些虫子

您能告诉我如何在IntelliJ中启用此功能吗?我尝试的是:

1当我转到Preferences/Editor/Language injections/+sign/Java参数时,我在列表中没有看到SQL,不是说HQL,而是JQL,这太疯狂了。。。。不管怎么说,看起来我想启用比简单语法检查更深入的功能,它必须检查数据库结构

2当我转到文件/项目结构/Facets/+符号时,我没有看到JPA,只有一些Android选项和Java渐变


这里有什么建议吗?

在数据库视图中,您的数据源设置是什么

如果尚未显示,请转到查看->工具窗口->数据库

在那里,您应该可以看到连接的数据源

如果不存在,则需要使用+->数据源进行设置,然后选择要使用的数据库并设置连接

完成此操作后,或者如果数据库连接已经存在,则需要使用数据库视图中的刷新图标同步数据源

然后单击更多模式,选择您使用的模式,并点击同步。Intellij现在应该知道数据库和表结构


希望它能自动检查您的查询,除非有其他问题

最终版本支持JPA/Hibernate功能

IDEA具有语言注入功能,可以将SQL、RegExp、XML、HTML、CSS等语言注入到代码中的字符串文本中,从而在编辑该文本时获得全面的编码帮助


您可以在此处获得有关此主题的三个结论的帮助和提示:

1正如@Liping Huang指出的,现场检查和我想象的错误Highlighting只在终极版中出现

2我更深入地研究了这个问题,看起来我实际上对此有一些基本的支持,但我只是忽略了隐藏在堆栈下部的错误消息。在社区中,我必须尝试运行该应用程序,因此没有实时突出显示。然后,如果表名中有错误,消息将出现在堆栈跟踪中

以下是示例,请注意UseSR未映射消息:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'protectedController': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRepositoryImpl': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract void com.ekinnolab.database.repository.user.userRepository.setAsDeletedById(java.lang.Long)!
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:592) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.4.RELEASE.jar:4.3.4.RELEASE]
(…)

//    cutting out 150 about lines
(...)
        at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
        at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) ~[hibernate-entitymanager-5.0.11.Final.jar:5.0.11.Final]
        ... 69 common frames omitted
 HERE ==> Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Usesrs is not mapped
            at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:171) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:76) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:321) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3687) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3576) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:716) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.updateStatement(HqlSqlBaseWalker.java:373) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:265) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:190) ~[hibernate-core-5.0.11.Final.jar:5.0.11.Final]
            ... 77 common frames omitted

3顺便说一句,对于纯SQL,有一些有趣的插件。只需转到IntelliJ IDEA/首选项/插件/浏览存储库。SQL查询插件是那些看起来很有前途的插件之一。

hi,我在工具窗口下没有看到这样的数据库位置。也许这只是终极版我错了,当我检查那个时,我以为我在使用社区,但我在看终极版。见@Liping发布的答案。我会再次检查你的同事是否没有Intellij的最终版本。