【问题标题】:Intellij JPA Console with persistence.xml带有 persistence.xml 的 Intellij JPA 控制台
【发布时间】:2014-12-01 16:13:57
【问题描述】:

我正在使用 Intellij 13+ 设置无 xml 持久性 JPA/Hibernate 4+/Spring 3+。当我尝试在 jpa 控制台中执行查询时,出现以下错误:

javax.persistence.PersistenceException: Unable to build entity manager factory
java.lang.RuntimeException: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.PostgreSQL9Dialectt.PostgreSQL9Dialect] as strategy [org.hibernate.dialect.Dialect]

使用默认的 postgres 方言,我得到同样的错误。 知道发生了什么吗?

配置摘录:

<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.wikiz.service.model.rep" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
            <prop key="jadira.usertype.autoRegisterUserTypes">true</prop>
            <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
        </props>
    </property>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${db.driver}"/>
    <property name="url" value="${db.url}"/>
    <property name="username" value="${db.user}"/>
    <property name="password" value="${db.pass}"/>
</bean>

还有变量:

hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.hbm2ddl.auto=create

【问题讨论】:

  • 请添加persistence.xml
  • 好的。我想我明白了,但会有点长
  • @Deinum:配置没有persistence.xml文件,而是配置了packagesToScan属性
  • 你试过我的答案了吗?我很想知道它是否有效
  • 我在 Intellij 上遇到了同样的问题,正在寻找解决方案,因为我想测试我的 JPQL

标签: spring jpa intellij-idea


【解决方案1】:

好的,就是这样。 我不是 100% 确定这是否有助于您的情况,但我认为这是您需要做的: 从数据库选项卡(通常在您的右侧)添加到数据库的 jdbc 连接


然后将休眠方面添加到您的模块 转到模块 (alt+ctrl+shift+s) 然后添加它:
现在您已经启用了左侧的持久性选项卡(通常),您可以将数据源分配给您的

现在添加hibernate配置但是你必须添加hibernate的xml文件。我没有尝试只添加 spring 应用程序上下文而不是 hibernate.cfg.xml。也许它会起作用...


现在您已经为 intellij 启用了 presistance 配置,您可以为其分配数据源。

选择您想要的数据源,您将能够将 JPA 控制台与您的 jpa POJO 和 HSQL 一起使用

【讨论】:

  • 你说:“我还没有尝试过只添加 spring 应用程序上下文而不是 hibernate.cfg.xml。也许它会工作......” --> 这正是重点:它在我的机器上不起作用。有没有办法让它工作??
  • 这行得通...但我猜 IntelliJ 还没有扫描实体管理器数据源...如果您在其中一个应用程序上下文文件中添加会话工厂,它确实可以识别数据源那里...希望 Jetbrains 的人们在未来增加对此的支持...
  • 也不适用于我的..使用 spring boot 配置不在 xml 文件中
猜你喜欢
  • 2015-12-16
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
相关资源
最近更新 更多