【问题标题】:How can I generate entities with IntelliJ without having a session factory?如何在没有会话工厂的情况下使用 IntelliJ 生成实体?
【发布时间】:2017-06-29 12:49:41
【问题描述】:

我正在使用我们的内部库来生成会话工厂。这意味着我没有带有 Hibernate 配置的 xml 文件;此类信息是从部署我的应用程序的容器中的配置文件中读取的。我也不会在代码中的任何位置创建SessionFactory 的新实例;我添加了一个为我执行此操作的捆绑包。

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

JPA annotation mappings require at least one Session Factory

考虑到我没有配置文件,也没有自己构造SessionFactory,有没有办法生成注解?

【问题讨论】:

    标签: java hibernate intellij-idea dropwizard


    【解决方案1】:

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

    1. 进入查看->工具窗口->数据库点击+添加新的数据源。
    2. 转到“项目结构”(alt+ctrl+shift+s
    3. 在“项目设置”中选择“模块”
    4. + 并在您的模块中添加 JPA/Hibernate 方面。
    5. 转到查看->工具窗口->持久性,RB->生成持久性映射->按数据库模式。并选择生成的数据源和包。

    【讨论】:

    • 这里重要的一步是添加JPA 模块!之后,不再需要SessionFactory 设置。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      对于 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、用户名、密码。点击“Add to Session Factory”右侧的浏览指向hibernate.cfg.xml上面。然后生成 POJO 且不会出现错误“JPA 注释映射需要至少一个 Session Factory”。

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

      【讨论】:

      • 为我工作,只需要删除“connection.driver_class”和“dialect”属性
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2012-07-21
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多