如何在没有会话工厂的情况下使用IntelliJ生成实体?

时间:2017-06-29 12:49:41

标签: java hibernate intellij-idea dropwizard

我正在使用内部库来生成会话工厂。这意味着我没有Hibernate配置的xml文件;这样的信息是从部署了我的应用程序的容器中的配置文件中读取的。我也没有在我的代码中的任何地方创建SessionFactory的新实例;我添加了一个为我这样做的包。

但是,当我尝试使用IntelliJ生成实体时,我收到错误消息:

JPA annotation mappings require at least one Session Factory

考虑到我没有配置文件,而且我自己没有构建SessionFactory,有没有办法生成注释?

3 个答案:

答案 0 :(得分:7)

您可以使用数据库连接生成实体。

  1. Go View-> Tool Windows->数据库点击 + 添加新数据源。
  2. 转到"项目结构" ( ALT + CTRL + + 取值
  3. 在"项目设置"选择"模块"
  4. + 并在模块中添加JPA / Hibernate构面。
  5. Go View-> Tool Windows-> Persistance,RB-> Genrate Persisting Mapping-> By Database Schema。并选择生成的数据源和包。

答案 1 :(得分:1)

我正在使用Spring数据JPA并遇到了类似的问题。为了解决这个问题,我创建了一个临时类,如下所示,让IntelliJ创建一个hibernate.cfg.xml(点击“添加到会话工厂”旁边的绿色+),这两个都是在我运行映射后删除的。有点令人讨厌的解决方法,但比手动映射所有内容要快得多。希望这会有所帮助。

@Component
public class IMADEANENTITYMANAGEROK/*!?!?!*/ {
    @Autowired
    HibernateJpaSessionFactoryBean hibernateJpaSessionFactoryBean;
    SessionFactory sessionFactory;
    public IMADEANENTITYMANAGEROK()
    {
        sessionFactory = hibernateJpaSessionFactoryBean.getObject();
    }
}

答案 2 :(得分:0)

对于Spring Data JPA,在/ resources下添加hibernate.cfg.xml。

例如对于PostgreSQL:

<hibernate-configuration>
<session-factory>
    <property name="connection.url">jdbc:postgresql://localhost:5432/db_name</property> 
    <property name="connection.driver_class">org.postgresql.Driver</property> 
    <property name="connection.password"></property> 
    <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
    <property name="hbm2ddl.auto">update</property> 
    <property name="show_sql">true</property> 
    <property name="format_sql">true</property>
</session-factory>
</hibernate-configuration>

设置您自己的数据库url,用户名和密码。单击“添加到会话工厂”右侧的浏览,以指向上方的hibernate.cfg.xml。然后将生成POJO,而不会出现错误“ JPA批注映射至少需要一个Session Factory”。

生成后,将hibernate.cfg.xml文件删除或重命名为hibernate.cfg.xml.bak,以防再次使用。