Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有会话工厂的情况下使用IntelliJ生成实体?_Java_Hibernate_Intellij Idea_Dropwizard - Fatal编程技术网

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

Java 如何在没有会话工厂的情况下使用IntelliJ生成实体?,java,hibernate,intellij-idea,dropwizard,Java,Hibernate,Intellij Idea,Dropwizard,我正在使用我们的内部库生成会话工厂。这意味着我没有带有Hibernate配置的xml文件;这样的信息是从部署应用程序的容器中的配置文件中读取的。我也不会在代码中的任何地方创建新的SessionFactory实例;我添加了一个包来为我实现这一点 但是,当我尝试使用IntelliJ生成实体时,会出现一个错误,错误是: JPA注释映射至少需要一个会话工厂 考虑到我没有配置文件,而且我自己也没有构建会话工厂,有没有办法生成注释?您可以使用数据库连接生成实体 转到查看->工具窗口->数据库单击+添加新数据

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

但是,当我尝试使用IntelliJ生成实体时,会出现一个错误,错误是:

JPA注释映射至少需要一个会话工厂


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

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

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

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

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

    对于Spring数据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>
    
    
    jdbc:postgresql://localhost:5432/db_name 
    org.postgresql.Driver
    org.hibernate.dialogue.PostgreSqlDialogue
    更新
    真的
    真的
    
    设置您自己的数据库url、用户名和密码。单击“添加到会话工厂”的浏览右侧,指向上面的hibernate.cfg.xml。然后生成POJO时不会出现错误“JPA注释映射至少需要一个会话工厂”


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

    这里的重要步骤是添加
    JPA
    模块!在那之后,不再需要
    SessionFactory
    安装程序。为我工作,只需删除“connection.driver\u class”和“dialogue”属性