apache-flex 找不到休眠属性

nfs0ujit  于 2022-11-01  发布在  Apache
关注(0)|答案(4)|浏览(138)

我们正在将java blazeds hib与flex项目集成。首先,我们在eclipse中测试了纯java hib,它执行得很好。但是,当我们将其放入tomcat中进行flex与blazeds的集成时,它显示以下错误。这是唯一的错误。

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方法的起点...但当涉及到Hibernate的执行时,它在Tomcat中显示此错误...
但是当我把java+ hib作为一个纯java应用程序执行时,它执行得很好。
有人能帮我吗?
谢谢
EDIT 1在@Andremoniy建议的修改之后,将. cfg.xml放入src文件夹中,此处也在eclipse中,它可以工作,但在tomcat中无法与flex一起工作
出现以下错误

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

q5iwbnjs1#

我猜问题是您提到的.hbm.xml配置代码可能在Tomcat中不起作用。
我认为它需要AnnotationConfiguration对象。我猜你使用这段代码是因为Annotationconfiguration对象创建不起作用。
最好使用pom创建一个maven hib项目,并将war文件导出到Tomcat(带有Annotationconfiguration的更改)。还可以使用log4j jar显示Tomcat执行的详细信息和调试输出,以便Tomcat输出将打印所有执行流。

jyztefdp

jyztefdp2#

在我看来,您可以通过将hibernate.cfg.xml直接传递到Configuration来解决此问题。

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

唯一的问题是,你必须正确地指向getResourceAsStream的路径或类,或者你可能想使用一些相对路径来创建InputStream

62o28rlo

62o28rlo3#

我也遇到过同样的问题,但我在这里找到了解决办法。
http://www.mkyong.com/hibernate/hibernate-error-an-annotationconfiguration-instance-is-required-to-use/
即更改行:

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

至:

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

flseospp4#

如果您使用的是Intellij Idea,则需要将hib. cfg.xml文件放入resources文件夹中

并且如果在下一个错误之后将出现:异常错误:解析JNDI名称[]时出错**
在hibernate.cfg.xml文件中删除标签名称见图片

相关问题