我正在尝试让JPA控制台在Intellij中运行。我在facets下添加了JPA到项目中。但是,IDE要求使用persistence.xml。我正在使用Annotated Spring并且没有任何直接映射文件。以前有人配置过这个,可以帮帮我吗?感谢
更多信息:
不添加JavaEE东西 - 我不需要这个。 文件 - >项目结构 - 在模块下:将JPA添加到单个模块。不要添加persistence.xml或orm.xml
在facets下:添加JPA。将XML配置留空。将JPA Provider留空
查看 - >工具窗口 - >持久性
您将在SpringContext.xml下看到模块名称和EntityManager。在我的系统上,我在SpringContext.xml中引用了这些属性
# jdbc.X
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql:///someThing
jdbc.user=postgres
jdbc.pass=postgres
# hibernate.X
hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect
hibernate.show_sql=false
hibernate.hbm2ddl.auto=create
然后我在我的持久性窗口中选择(我现在可以看到所有实体) - 单击控制台按钮。选择JPA控制台。这将得到我在这里概述的错误{是的,我正在使用Postgres}
注意两个“TTs-”PostgreSQL9Dialectt
进一步的信息:
奇怪。如果我将方言移动到实际的xml配置
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>
<!--<prop key="hibernate.enable_lazy_load_no_trans">true</prop>-->
</props>
</property>
[2017-01-04 13:03:46] java.lang.IllegalStateException: Transaction already active
at org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:52)
at com.intellij.jpa.remote.impl.RemoteQueryImpl$1.getResultList(RemoteQueryImpl.java:92)
at com.intellij.jpa.remote.impl.QueryResultImpl.ensureInitialized(QueryResultImpl.java:113)
at com.intellij.jpa.remote.impl.QueryResultImpl.getColumnInfos(QueryResultImpl.java:30)
at com.intellij.jpa.remote.impl.RemoteQueryResultImpl.getColumnInfos(RemoteQueryResultImpl.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)