Java blazeds hibernate with flex project ..を最初に統合しています。最初に純粋なJava hibernateをEclipseでテストしましたが、うまく実行されています。ただし、 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;
}
}
エラーが表示されるのはなぜですか?コントロールはフレックス側から来て、Javaメソッド...の開始点を実行しています...しかし、休止状態のものの実行に関しては、Tomcatでこのエラーを表示しています...
しかし、Java + hibernateを純粋なJava=アプリケーションとして実行すると、問題なく実行されます。
誰かが私を助けることができますか?
ありがとう
編集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)
問題は、あなたが.hbm.xml
について述べた構成のコードがTomcatで機能していない可能性があることだと思います。
AnnotationConfiguration
オブジェクトが必要だと思います。 Annotationconfiguration
オブジェクトの作成が機能していないため、このコードを使用したと思います。
Pomでmaven hibernateプロジェクトを作成し、war
ファイルをTomcatにエクスポートすることをお勧めします(Annotationconfiguration
を変更して)。また、log4j jarを使用して、デバッグ出力でTomcat実行の詳細を表示し、Tomcat出力が実行フローのすべてを出力するようにします。
私は同じ問題に直面しましたが、ここで解決策を見つけました。
すなわち。行を変更します。
new Configuration().configure().buildSessionFactory();
に:
new AnnotationConfiguration().configure().buildSessionFactory();
hibernate.cfg.xml
をConfiguration
に直接渡すことで、この問題を解決できるようです。
try (InputStream in = HibernateUtil.class.getResourceAsStream("/hibernate.cfg.xml")) {
Configuration configuration = new Configuration().addInputStream(in).configure();
...
} ...
唯一のことは、getResourceAsStream
のパスまたはクラスを適切に指す必要があることです。または、いくつかの相対パスを使用してInputStream
を作成することもできます。