我在这里真的很疯狂。我有这样的代码:
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
。
任何人?感谢。
答案 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);