首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将名称[org.hibernate.dialectMySQLDialect]解析为策略[org.hibernate.dialect.Dialect]

无法将名称[org.hibernate.dialectMySQLDialect]解析为策略[org.hibernate.dialect.Dialect]
EN

Stack Overflow用户
提问于 2017-08-16 10:00:37
回答 2查看 9K关注 0票数 2

我试图在jsp文件中从数据库中读取某个表。它给了我两个错误,到目前为止我还没有找到任何解决办法.

以下是JSP文件的相关部分:

代码语言:javascript
复制
<div class="col-lg-12">
                    <hr>
                    <h2 class="intro-text text-center">
                        Capitolul <strong><%= request.getParameter("capitol") %></strong>
                    </h2>
                    <hr>

                    <hr class="visible-xs">
                    <p id="titles"></p>

                        <%
                                QuestionDAO quest = new QuestionDAO();
                                questions = quest.getQuestions();
                                out.println(questions.size());
                                for(Question q:questions){
                                    out.println(questions.size());
                                    out.println(q.getQuestion());
                                }
                                out.println("Asdfasdf");
                        %>

                </div>

下面是QuestionDAO类:

代码语言:javascript
复制
public class QuestionDAO {

    private static final Log LOGGER = LogFactory.getLog(QuestionDAO.class);

    private static SessionFactory factory;



    @SuppressWarnings("unchecked")
    public List<Question> getQuestions(){

        List<Question> q = new ArrayList<Question>();
        Transaction tx=null;

          try{
                Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
                SessionFactory sessionFactory = configuration.buildSessionFactory();
                Session session = sessionFactory.openSession();
                tx = session.beginTransaction();

             Query query = session.createQuery("FROM Question");
             q = query.list();
             System.out.println(q.size()+"!!!");
             for(int i=0; i<q.size(); i++) {
                q.add(q.get(i));
             }
             tx.commit();
          }catch (HibernateException e) {
                if (tx != null) {
                    tx.rollback();
                }
                LOGGER.error("", e);
            } 

          return q;
       }


       public Question addQuestion(Question question) {
            int questionId = -1;
            Session session = factory.openSession();
            Transaction tx = null;
            try {
                tx = session.beginTransaction();
                questionId = (Integer) session.save(question);
                question.setId(questionId);
                tx.commit();
            } catch (HibernateException e) {
                if (tx != null) {
                    tx.rollback();
                }
                LOGGER.error("", e);
            } finally {
                session.close();
            }
            return question;
        }
       @SuppressWarnings("unchecked")
        public Question findQuestion(int id) {
            Session session = factory.openSession();
            Transaction tx = null;
            List<Question> questions = null;
            try {
                tx = session.beginTransaction();
                Query query = session.createQuery("FROM Question WHERE id = :id");
                query.setParameter("id", id);
                questions = query.list();
                tx.commit();
            } catch (HibernateException e) {
                if (tx != null) {
                    tx.rollback();
                }
                LOGGER.error("", e);
            } finally {
                session.close();
            }
            return questions != null && !questions.isEmpty() ? questions.get(0) : null;
        }

       public Question deleteQuestion(int id) {
            Session session = factory.openSession();
            Transaction tx = null;
            Question question = (Question)session.load(Question.class, id);
            try {
                tx = session.beginTransaction();
                session.delete(question);
                tx.commit();
            } catch (HibernateException e) {
                if (tx != null) {
                    tx.rollback();
                }
                LOGGER.error("", e);
            } finally {
                session.close();
            }
            return question;
        }

}

THe hibernate cfg文件:

代码语言:javascript
复制
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/licenta</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.dialect">org.hibernate.dialectMySQL5Dialect</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">validate</property>
        <mapping resource="user.hbm.xml"/>
        <mapping resource="chapter.hbm.xml"/>
        <mapping resource="comments.hbm.xml"/>
        <mapping resource="problems.hbm.xml"/>
        <mapping resource="questions.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

hbm问题(如有必要):

代码语言:javascript
复制
<hibernate-mapping>
    <class name="models.Question" table="questions">
        <meta attribute="class-description">
            This class contains the questions detail.
        </meta>
        <id name="id" type="int" column="id">
            <generator class="native" />
        </id>

        <property name="question" column="question" type="string" />
        <property name="dateAsked" column="date_asked" type="date" />

        <many-to-one name="User" class="models.User"
            column="user_id" not-null="true"
            cascade="all" />

    </class>

</hibernate-mapping>

错误跟踪是这样的:

代码语言:javascript
复制
aa DEBUG org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator: JDBC version : 4.0
aa WARN org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator: HHH000342: Could not obtain connection to query metadata : Unable to resolve name [org.hibernate.dialectMySQLDialect] as strategy [org.hibernate.dialect.Dialect]
aa ERROR dao.QuestionDAO: 
org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
    at dao.QuestionDAO.getQuestions(QuestionDAO.java:39)
    at org.apache.jsp.forum_002dcapitol_jsp._jspService(forum_002dcapitol_jsp.java:188)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialectMySQLDialect] as strategy [org.hibernate.dialect.Dialect]
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:126)
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:194)
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:152)
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:139)
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:133)
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:74)
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:51)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259)
    ... 41 more
aa DEBUG org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl: Connection pool now considered primed; min-size will be maintained

我说我不使用Maven。你能看到这里的问题吗?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-16 10:04:08

我想你漏掉了一个点(.)

你能试一下吗

代码语言:javascript
复制
org.hibernate.dialect.MySQLDialect 

代码语言:javascript
复制
org.hibernate.dialect.MySQL5Dialect
票数 0
EN

Stack Overflow用户

发布于 2017-08-16 10:04:15

将其更改为

代码语言:javascript
复制
 org.hibernate.dialect.MySQL5Dialect
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45710536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档