休眠配置不起作用



我真的快疯了。我有这样的代码:

private SessionFactory getSessionFactory() {
  Configuration conf = new Configuration();
  System.out.println("before");
  conf.configure("hibernate.cfg.xml");
  System.out.println("after");
  StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(conf.getProperties());       
  SessionFactory sessionFactory = conf.buildSessionFactory(ssrb.build());
  return sessionFactory;
}

我已经在Eclipse中使用src文件夹设置了该项目,该文件夹包含包和hibernate.cfg.xml文件。当我使用Eclipse运行项目时,客户端会得到良好的会话(打印<之前>和<之后>)。

现在:我还有一个Ant目标来运行我的项目,我确信hibernate.cfg.xml在类路径中,但当我运行程序时,应用程序不会在<之后打印>;。也不例外,但最终我得到了Caused by: java.lang.IllegalStateException: Could not locate SessionFactory in JNDI

有人吗?谢谢

问题是文件不在正确的位置。我增强了Ant脚本,使用以下目标将资源复制到类路径的根目录中。

<target name="copy-resources">
    <copy todir="${targetdir}">
        <fileset dir="${sourcedir}">
            <exclude name="**/*.java"/>
        </fileset>
    </copy>
</target>
Configuration cf = new Configuration();
    //  cf.setNamingStrategy(ImprovedNamingStrategy.INSTANCE);
    cf.setProperty("hibernate.connection.datasource", datasourceJNDIName);

    cf.configure("hibernate.cfg.xml");
    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
            .applySettings(cf.getProperties()).build();
    SessionFactory sessionFactory  = cf.buildSessionFactory(serviceRegistry);

相关内容

  • 没有找到相关文章

最新更新