2016-06-21 2 views
1

봄에 익숙하지 않고 다음과 같은 오류가 계속 발생하며 시간이 지나도 문제가 발견되지 않습니다. 어떤 도움을 주시면 감사하겠습니다!봄 : 'sessionFactory'라는 이름의 빈을 생성하는 중 오류가 발생했습니다.

내 ApplicationContext.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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/tx       http://www.springframework.org/schema/tx/spring-tx.xsd"> 
    <!-- Root Context: defines shared resources visible to all other web components --> 
    <context:annotation-config /> 
    <context:component-scan base-package="models" /> 
    <context:component-scan base-package="repositories" /> 
    <context:component-scan base-package="services" /> 
    <context:component-scan base-package="controllers" /> 
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/messages" /> 
     <property name="username" value="root" /> 
     <property name="password" value="123456" /> 
    </bean> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>models.entities.MessagesEntity</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">false</prop> 
       <prop key="hibernate.format_sql">true</prop> 
      </props> 
     </property> 
    </bean> 
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory" /> 
    <tx:annotation-driven transaction-manager="transactionManager" /> 
</beans> 

내 MessagesEntity.java :

package models.entities; 

import javax.persistence.*; 
import java.util.Date; 

@Entity 
@Table(name = "usermessages", schema = "messages", catalog = "`") 
public class MessagesEntity { 
    @Id 
    @GeneratedValue(strategy= GenerationType.AUTO) 
    @Column(name = "id") 
    private long id; 

    @Column(name = "message") 
    private String message; 

    @Column(name = "username") 
    private String username; 

    @Column(name = "senttime") 
    private Date sentTime; 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public Date getSentTime() { 
     return sentTime; 
    } 

    public void setSentTime(Date time) { 
     this.sentTime = time; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 

     MessagesEntity that = (MessagesEntity) o; 

     if (message != null ? !message.equals(that.message) : that.message != null) 
      return false; 
     if (username != null ? !username.equals(that.username) : that.username != null) 
      return false; 
     if (sentTime != null ? !sentTime.equals(that.sentTime) : that.sentTime!= null) 
      return false; 

     return true; 
    } 

    @Override 
    public int hashCode() { 
     int result = message != null ? message.hashCode() : 0; 
     result = 31 * result + (username != null ? username.hashCode() : 0); 
     result = 31 * result + (sentTime != null ? sentTime.hashCode() : 0); 
     return result; 
    } 
} 

그리고 이것은 내 pom.xml 파일입니다 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>projects.web</groupId> 
    <artifactId>New_WebServer</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>New_WebServer Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <springframework.version>4.3.0.RELEASE</springframework.version> 
    <javax.javaee.version>7.0</javax.javaee.version> 
    <hibernate.version>4.3.6.Final</hibernate.version> 
    <mysql.connector.version>5.1.31</mysql.connector.version> 
    <joda-time.version>2.3</joda-time.version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.7</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>${javax.javaee.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <!-- MySQL --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>${mysql.connector.version}</version> 
    </dependency> 

    <!-- Joda-Time --> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>${joda-time.version}</version> 
    </dependency> 

    <!-- To map JodaTime with database type --> 
    <dependency> 
     <groupId>org.jadira.usertype</groupId> 
     <artifactId>usertype.core</artifactId> 
     <version>3.0.0.CR1</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>New_WebServer</finalName> 
    <plugins> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <webappDirectory>target</webappDirectory> 
     </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 

    </plugins> 
    </build> 
</project> 

나는 또한 다음과 같은 클래스를 생성 : MessageRepositoryImpl.java

import models.entities.MessagesEntity; 

import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 
import repositories.MessageRepository; 

@Repository 
public class MessageRepositoryImpl implements MessageRepository { 

    @Autowired 
    private SessionFactory sessionFactory; 

    @Override 
    public MessagesEntity getById(long id) { 
     return (MessagesEntity) sessionFactory.getCurrentSession().get(MessagesEntity.class, id); 
    } 
} 

MessageServiceImpl.java

import models.entities.MessagesEntity; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 
import repositories.MessageRepository; 
import services.MessageService; 

@Service 
public class MessageServiceImpl implements MessageService { 

    @Autowired 
    private MessageRepository messageRepo; 

    @Transactional 
    public MessagesEntity get(long id) { 
     return this.messageRepo.getById(id); 
    } 
} 

어떤 아이디어가?

+1

오류 스택 트레이스를 적절하게 추가하십시오. – Mudassar

+0

실제 스택 추적을 게시하십시오. –

답변

1

님은 MessagesEntity에 catalog = "`"를 잘못 입력 한 것으로 보입니다. 카탈로그는 사용자가 데이터베이스의 서버 측에서 정의하는 "네임 스페이스"입니다.