2017-11-30 7 views
0

私は私の最初の春+ Webアプリケーションを休止し、これは私がコンソールに持っているものである作成の真ん中にいるよ:JavaのSpring MVCの+休止状態 - SessionFactoryの「不満依存」errror

Root Cause 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'quizDAOImpl': Unsatisfied dependency expressed through field 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.kubacki.entity.Quiz 

私はすでに発見してみました既存のソリューションは何も動作していないようですが、私を助けてくれますか?

XMLの設定が間違っているか、自分自身をコーディングする際に間違いがあるのか​​どうかは分かりませんが、私の見解では "sessionFactory" beanはXMLで正しく設定されています。

QuizDAO:

また、このプロジェクトのためにMavenを使用してI'amが、私はすでにのpom.xml内のすべての春+休止状態のものをここで

は私のソースコードされてリストされている

package com.kubacki.dao; 

import java.util.List; 

import com.kubacki.entity.Quiz; 

public interface QuizDAO { 

    public Quiz getQuiz(int id); 

    public List<Quiz> getQuizzes(); 

} 

QuizDAOImpl:

package com.kubacki.dao; 

import java.util.List; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.query.Query; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 

import com.kubacki.entity.Quiz; 

@Repository 
public class QuizDAOImpl implements QuizDAO { 

    @Autowired 
    private SessionFactory sessionFactory; 

    @Override 
    public Quiz getQuiz(int id) { 

     Session tempSession = sessionFactory.getCurrentSession(); 

     Quiz tempQuiz = tempSession.get(Quiz.class, id); 

     return tempQuiz; 
    } 

    @Override 
    public List<Quiz> getQuizzes() { 

     Session tempSession = sessionFactory.getCurrentSession(); 

     Query<Quiz> theQuery = tempSession.createQuery("from quiz", Quiz.class); 

     List<Quiz> tempQuizzes = theQuery.getResultList(); 

     return tempQuizzes; 
    } 

} 

のWeb.xml:

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 

    <display-name>WebApp</display-name> 

    <servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

ディスパッチャ-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <!-- Add support for component scanning --> 
    <context:component-scan base-package="com.kubacki" /> 

    <!-- Add support for conversion, formatting and validation support --> 
    <mvc:annotation-driven/> 

    <!-- Define Spring MVC view resolver --> 
    <bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/view/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

    <!-- Step 1: Define Database DataSource/connection pool --> 
    <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
      destroy-method="close"> 
     <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
     <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/quizdb?useSSL=false" /> 
     <property name="user" value="root" /> 
     <property name="password" value="admin" /> 

     <!-- these are connection pool properties for C3P0 --> 
     <property name="minPoolSize" value="5" /> 
     <property name="maxPoolSize" value="20" /> 
     <property name="maxIdleTime" value="30000" /> 
    </bean> 

    <!-- Step 2: Setup Hibernate session factory --> 
    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource" /> 
     <property name="packagesToScan" value="com.kubacki.entity" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean>  

    <!-- Step 3: Setup Hibernate transaction manager --> 
    <bean id="myTransactionManager" 
      class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 

    <!-- Step 4: Enable configuration of transactional behavior based on annotations --> 
    <tx:annotation-driven transaction-manager="myTransactionManager" /> 


</beans> 

答えて

1

と思うエラー

No identifier specified for entity: com.kubacki.entity.Quiz 

を1として、あなたはQuizクラスに@Idでアノテートフィールドが欠落しています。各@Entityには@Idが必要です。これはデータベースの主キーになります。

+0

@ Amdg主キーはありません。 –

+0

Hibernateには主キーが必要です。 Ref:[ここ](http://docs.jboss.org/hibernate/core/3.5/reference/en/html/mapping.html#mapping-declaration-id)、[hibernate forums](https:// forum。 hibernate.org/viewtopic.php?f=1&t=938887) – amdg

+0

ありがとう、完璧に働いた!私はそれを逃したとは信じられない。 –

関連する問題