0

Java EE と Hibernate を学習していますが、次の問題に遭遇しました。

Eclipse で動的 Web プロジェクトを作成し、それを MAVEN プロジェクトに変換し、mysql-connector-java と hibernate-core 依存関係を pom.xml に追加しました。サーブレットを追加し、doGet メソッドで sessionfactory を初期化してテーブルを作成しようとしました。私はトムキャットを使用しています。

サーブレットにリクエストを送信すると、次の例外が発生します。

org.hibernate.HibernateException: Dialect class not found:   org.hibernate.dialect.MYSQLDialect
 org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:77)
org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:65)
org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:146)
org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:76)
org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:160)
org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:132)
org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1818)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1776)
hu.adamsan.testhibernate.TestHibernate.doGet(TestHibernate.java:74)

pom.xml:

dependencies>
    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.2.6.Final</version>
        </dependency>
</dependencies>

Maven の依存関係を調べてみましたが、org.hibernate.dialect.MySQLDialect.class は次の場所にあります。 \org.eclipse.wst.server.core\tmp0\wtpwebapps\TestHibernateWeb\ の WEB-INF\lib ディレクトリに hibernate-core-4.2.6.Final.jar があり、7zip で開くと、 org/hibernate/dialect/MySQL5Dialect.class 内を見つけます。

私は何が欠けていますか?本当にわからない。

doGet メソッド:

    PrintWriter w = response.getWriter();
    w.println("Testing hibernate<br/>");
    w.println(getServletContext().getRealPath(".")+"<br/>");

    Configuration config;
    ServiceRegistry registry;
    SessionFactory factory;     
    config = new Configuration().addAnnotatedClass(Modell.class);       
    Properties props = getProperties();     
    props.setProperty(Environment.HBM2DDL_AUTO, "create");      
    config.setProperties(props);        
    registry = new ServiceRegistryBuilder().applySettings(props).buildServiceRegistry();        
    factory = config.buildSessionFactory(registry);     
    factory.close();
4

2 に答える 2

4

答えは質問にあります。jar ファイルにMySQLDialectとが見つかりましたが、構成ファイルは. Java では大文字と小文字が区別されます。MySQL5DialectMYSQLDialect

于 2013-10-06T07:30:19.277 に答える