Hibernate配置不起作用

时间:2015-11-16 18:30:42

标签: java eclipse hibernate ant

我在这里真的很疯狂。我有这样的代码:

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

任何人?感谢。

2 个答案:

答案 0 :(得分:0)

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

<target name="copy-resources">
    <copy todir="${targetdir}">
        <fileset dir="${sourcedir}">
            <exclude name="**/*.java"/>
        </fileset>
    </copy>
</target>

答案 1 :(得分:-1)

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);