找不到hibernate属性

我们正在将java blazeds hibernate与flex项目集成。首先我们在eclipse中测试了纯java hibernate并且它正在执行。 但是当我们在tomcat中使用与blazeds进行flex集成时,它会显示以下错误。这是唯一的错误。

Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment  INFO: Hibernate 3.2.6 Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment  INFO: hibernate.properties not found Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment  INFO: using JDK 1.4 java.sql.Timestamp handling Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Configuration configure INFO: configuring from resource: /hibernate.cfg.xml Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Configuration getConfigurationInputSt ream INFO: Configuration resource: /hibernate.cfg.xml 

这是hibernate.cfg.xml(要确定是否找不到hibernate.cfg.xml并通过删除.cfg.xml的DOCTYPE进行测试,然后显示tomcat输出显示找不到根元素…这意味着它能够找到hibernate.cfg.xml(我认为)

      jdbc:mysql://localhost/test root root com.mysql.jdbc.Driver org.hibernate.dialect.MySQLDialect true true  1 thread       

这是hiberutil.java

 public class HibernateUtil { private static SessionFactory sessionFactory=configureSessionFactory(); private static ServiceRegistry serviceRegistry; private static SessionFactory configureSessionFactory() throws HibernateException { Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); return sessionFactory; } public static SessionFactory getSessionFactory() { return sessionFactory; } } 

为什么错误显示? 控件来自flex方面并执行java方法的起点…但是当涉及到hibernate的东西执行时,它在tomcat中显示这个错误…

但是当我执行java + hibernate作为一个纯Java应用程序时,它执行正常..

有谁能够帮我?

谢谢

编辑1 @Andremoniy建议修改并将.cfg.xml放在src文件夹中,这里也是在eclipse中它可以工作但不是在tomcat中使用flex

以下错误来了

 org.hibernate.MappingException: An AnnotationConfiguration instance is required to use  at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.jav a:1606) at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.jav a:1561) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1540) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1514) at org.hibernate.cfg.Configuration.configure(Configuration.java:1434) at org.hibernate.cfg.Configuration.configure(Configuration.java:1420) at com.sample.HibernateUtil.configureSessionFactory(HibernateUtil .java:26) at com.sample.HibernateUtil.(HibernateUtil.java:20) at com.sample.App.checkUser(App.java:34) 

我想问题是您提到的.hbm.xml配置代码可能无法在Tomcat中运行。

我认为它需要AnnotationConfiguration对象。 我猜您使用此代码是因为Annotationconfiguration对象创建不起作用。

最好用pom创建一个maven hibernate项目,并将war文件导出到Tomcat(使用Annotationconfiguration的更改)。 还可以使用log4j jar来显示使用调试输出执行Tomcat的详细信息,以便Tomcat输出将打印所有执行流。

在我看来,你可以通过将hibernate.cfg.xml直接传递给Configuration来解决这个问题。

 try (InputStream in = HibernateUtil.class.getResourceAsStream("/hibernate.cfg.xml")) { Configuration configuration = new Configuration().addInputStream(in).configure(); ... } ... 

唯一的,你必须为getResourceAsStream正确指出路径或类。 或者您可能想要使用某个相对路径创建InputStream

如果看起来你使用Intellij Idea,你需要将hibernate.cfg.xml文件放入资源文件夹

广告

如果你有下一个错误后: org.hibernate.service.jndi.JndiException:解析JNDI名称[]时出错

在hibernate.cfg.xml中删除标签的文件名见图

在此处输入图像描述

我遇到了同样的问题,但我在这里找到了解决方案..

http://www.mkyong.com/hibernate/hibernate-error-an-annotationconfiguration-instance-is-required-to-use/

即。 换行:

 new Configuration().configure().buildSessionFactory(); 

至:

 new AnnotationConfiguration().configure().buildSessionFactory();