未找到休眠属性
Posted
技术标签:
【中文标题】未找到休眠属性【英文标题】:hibernate properties not found 【发布时间】:2013-01-07 20:09:17 【问题描述】:我们正在将 java blazeds hibernate 与 flex 项目集成。首先我们在 eclipse 中测试了纯 java hibernate,它运行良好。但是当我们将相同的内容放入 tomcat 与 blazeds 进行 flex 集成时,它会显示以下错误。这是唯一的错误。
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.6
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment <clinit>
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 <clinit>
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(我认为)
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<mapping class="com.model.User" />
<mapping class="com.model.UserDetails" />
<mapping class="com.model.LoanDetails" />
<mapping class="com.model.BorrowerDetails" />
</session-factory>
</hibernate-configuration>
这是 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 方法的起点...但是当涉及到休眠内容执行时,它在 tomcat 中显示此错误...
但是当我将 java+hibernate 作为纯 java 应用程序执行时,它运行良好..
谁能帮帮我?
谢谢
编辑 1 在@Andremoniy 建议的修改并将 .cfg.xml 放在 src 文件夹中,这里也在 eclipse 中它可以工作,但不能在带有 flex 的 tomcat 中工作
以下错误来了
org.hibernate.MappingException: An AnnotationConfiguration instance is required
to use <mapping class="com.model.User"/>
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.<clinit>(HibernateUtil.java:20)
at com.sample.App.checkUser(App.java:34)
【问题讨论】:
嗨,你原来的问题是什么错误?在你粘贴的堆栈中,我只能看到hibernate.properties not found
,这不是错误。
在我的原始问题中,执行通过打印我粘贴的堆栈来停止,然后不执行查询也没有输出......它以这样的方式结束......我将 show_sql 设置为 true,但事实并非如此印刷..
您是否检查了与数据库的连接?
我在 tomcat 中使用的相同 cfg.xml 文件也...在 eclipse 中它作为 java 应用程序完美运行..
@cporte 我使用 jdk 1.7 插件依赖项创建了 maven hibernate 项目并部署到 tomcat 中...以前的注释配置显示已弃用...现在它没有显示任何错误..它工作得非常好..谢谢建议
【参考方案1】:
我猜问题出在您为.hbm.xml
提到的配置代码可能无法在 Tomcat 中运行。
我认为它需要AnnotationConfiguration
对象。我猜您使用此代码是因为 Annotationconfiguration
对象创建不起作用。
最好用pom创建一个maven hibernate项目,并将war
文件导出到Tomcat(Annotationconfiguration
的变化)。还可以使用 log4j jar 来显示 Tomcat 执行的详细信息以及调试输出,以便 Tomcat 输出将打印所有执行流程。
【讨论】:
【参考方案2】:如果您使用 Intellij Idea,则需要将 hibernate.cfg.xml 文件放入 resources 文件夹
如果你会在下一个错误之后出现: org.hibernate.service.jndi.JndiException:解析 JNDI 名称时出错 []
在hibernate.cfg.xml文件中删除标签的名称看图:
【讨论】:
【参考方案3】:我也遇到了同样的问题,但我在这里找到了解决方案..
http://www.mkyong.com/hibernate/hibernate-error-an-annotationconfiguration-instance-is-required-to-use/
即。换行:
new Configuration().configure().buildSessionFactory();
到:
new AnnotationConfiguration().configure().buildSessionFactory();
【讨论】:
【参考方案4】:在我看来,您可以通过将hibernate.cfg.xml
直接传递给Configuration
来解决这个问题。
try (InputStream in = HibernateUtil.class.getResourceAsStream("/hibernate.cfg.xml"))
Configuration configuration = new Configuration().addInputStream(in).configure();
...
...
唯一的事情是,您必须正确地指向getResourceAsStream
的路径或类。或者您可能想使用一些相对路径创建InputStream
。
【讨论】:
谢谢。我是新来的冬眠。但 getClass() 指向错误。 其实是的,这是一个常见的例子。我已将其更改为HibernateUtil.class
,但这确实取决于您的hibernate.cfg.xml
所在的位置。放入放置HibernateUtil.java
的包中。
@SamprityKashyap 你把hibernate.cfg.xml
文件放在哪里了?
它在 src 文件夹中(它正在工作)..当我把它放在 hibernateutil 类的包中时,它显示以下错误信息:HHH000021:字节码提供程序名称:javassist java.lang.NullPointerException at org.hibernate.cfg.Configuration.add(Configuration.java:651) 在 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:685)以上是关于未找到休眠属性的主要内容,如果未能解决你的问题,请参考以下文章
休眠 Java:未找到函数“AES_DECRYPT”; SQL 语句: