当前位置: 首页 > 面试题库 >

Intellij如何使用Spring Boot正确配置hql。现在我得到持久性QL查询已进行错误检查

韩弘方
2023-03-14
问题内容

所以我试图通过hibernate和jpa使用自定义查询

@Transactional
public interface EstimateOptionsDao extends JpaRepository<EstimateOptions, Integer> {

    @Query("from estimateOptions options inner join options.company company inner join company.user user where user.name = :userName\n")
    EstimateOptions EstimateOptions(String userName);

}

但是,这EstimateOptions给了我以下错误:

Can't resolve symbol 'EstimateOptions' less... (Ctrl+F1) 
This inspection controls whether the Persistence QL Queries are error-checked

所以我发现了这篇文章为什么Hibernate查询在IntelliJ中有编译错误?。

所以我添加了一个方面来测试:

现在我有这样的hibernate.cfg.xml:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.url"/>
    <property name="connection.driver_class"/>
    <property name="connection.username"/>
    <property name="connection.password"/>
    <!-- DB schema will be updated if needed -->
    <!-- <property name="hbm2ddl.auto">update</property> -->
  </session-factory>
</hibernate-configuration>

和弹簧配置是这样的:

spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

但是,如果我使用intellij的Persistence Tool进行了如下简单查询:

hql>来自用户

它产生以下错误:

[2015-12-09 12:59:27] org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class []
[2015-12-09 12:59:27] java.lang.ClassNotFoundException: 
.....

如您所见,我有点迷路…这些设置有什么问题?


问题答案:
  1. Project structure设置(ctrl + alt + shift + s)中,选择FacetsAdd
  2. 选择 JPA
  3. 选择包含您的映射/注释实体的模块
  4. Modules视图中,选择有问题的模块和JPA下面的构面
  5. 添加对描述符的引用(persistence.xml / orm.xml)
  6. 从下拉列表中选择您的JPA提供商

然后,应针对您的实体验证您的JPA查询。



 类似资料:
  • 我为Hibernate创建了一个自定义类型来存储OffsetDateTime的时间戳和偏移量(因为默认的JPA 2.2/Hibernate 5.2 with java 8支持实现会丢失偏移量信息): 现在,我想比较一下,所以这个JPA-QL查询可以工作: 在这个模型上: } 但这在以下方面失败了: 如何使CustomUserType具有可比性?

  • 问题内容: 在Hibernate 3中,有没有办法等效于HQL中的以下MySQL限制? 如果可能的话,我不想使用setMaxResults。这肯定在较旧的Hibernate / HQL版本中是可行的,但似乎已经消失了。 问题答案: 几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上: 在HQL中,从不支持Limit 子句

  • 我想在运行时生成的SQLite数据库上运行查询(而不是@Dao中的标准compiletime查询)。例如,我可能想在SQLite数据库中搜索一个文本列,看看它是否包含N个长度的列表中的所有单词。在原始SQLITE中,N为3的查询如下所示: 我尝试过生成并传递查询的结尾,而不是仅仅传递变量。例如: 在@Dao中: 这似乎对我不起作用。你知道如何让运行时生成的查询与Room一起工作吗? 附言:

  • 我在C#中使用NUnit和Selenium来构建一个框架,其中包含在多个浏览器上运行多个测试用例。在这种情况下也支持Microsoft Edge。当我设置测试时,chrome和firefox正常运行,但edge出现以下错误: OpenQA。硒。WebDriverException:向远程WebDriver服务器发送HTTP请求以获取URL时,引发了一个响应为null的异常http://localh

  • 问题内容: 我对HQL查询和hibernate有疑问。 我有一个用户类和一个角色类。用户可以具有许多角色。所以我有一个像这样的ManyToMany关系: 在用户类别中: 在角色类中: 此映射创建了存储关系的第三个表(PORTAIL_USERROLE)。像这样一切正常。当我有一个用户时,我将检索角色。 但是,我的问题是:在HQL查询中,如何获得具有特定角色的所有用户?任何类都代表PORTAIL_US

  • 问题内容: 我有以下参数化的JPA或Hibernate查询: 我想将参数作为ArrayList 传递,这可能吗?hibernate电流告诉我, 这有可能吗? 解答 :集合作为参数只能与“ ” 这样的命名参数一起使用,而不能与“ ”这样的JDBC样式参数一起使用。 问题答案: 您正在使用Hibernate的对象还是JPA?对于JPA,它应该可以正常工作: 对于Hibernate,您需要使用setPa