2013-01-17 6 views
0

스프링의 실제 문제가 실제로 구조에 대한 지식이 필요하다는 것을 이해하려면. 나는이 문제에 대해 이틀 동안 고민하고 있으며 어떤 해결책도 찾을 수 없다.스프링 빈 생성 예외

2013-01-17 06:28:50,251 INFO [org.hibernate.cfg.SettingsFactory] - Database -> 
    name : MySQL 
version : 5.0.96-community-nt 
    major : 5 
    minor : 0 
2013-01-17 06:28:50,251 INFO [org.hibernate.cfg.SettingsFactory] - Driver -> 
    name : MySQL-AB JDBC Driver 
version : mysql-connector-java-5.1.12 (Revision: ${bzr.revision-id}) 
    major : 5 
    minor : 1 
2013-01-17 05:13:45,060 ERROR [org.springframework.web.context.ContextLoader] - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blogController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'langService': 
Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'langDao' defined in URL [jar:file:/C:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/NCFrameworkAdmin/WEB-INF/lib/NCFramework-0.0.1-SNAPSHOT.jar!/com/ns/commerce/framework/lang/dao/LangDaoImpl.class]: 
Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring/admin-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Wrong column type in db.nc_alert_log for column alerted. Found: bit, expected: TINYINT(1) DEFAULT 0; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/spring/admin-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Wrong column type in db.nc_alert_log for column alerted. Found: bit, expected: TINYINT(1) DEFAULT 0 

흥미로운 것은이 blogController, langServices하고 LangDao가 관련되어 그러나 그들은 "nc_alert_log"테이블에 대해 아무것도 : 나는 그것을 아래의 오류 메시지를 제공 빌드 할 때 내 프로젝트에서 최대 절전 모드를 사용하여.

LangDaoImpl

package com.ns.commerce.framework.lang.dao; 
import org.hibernate.Criteria; 
import org.hibernate.SessionFactory; 
import org.hibernate.criterion.Restrictions; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.stereotype.Repository; 
import com.ns.commerce.framework.lang.model.Lang; 
import com.ns.commerce.framework.generic.dao.GenericDAOImpl; 

@Repository("langDao") 
public class LangDaoImpl extends GenericDAOImpl<Lang, Long> implements LangDao { 

@Autowired 
public LangDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory) { 
    this.setSessionFactory(sessionFactory); 
} 

@Override 
public Lang findByLocaleCode(String localeCode) { 
    Criteria criteria = getCriteria(); 
    criteria.add(Restrictions.eq("localeCode", localeCode));   
    return findByCriteriaFirst(criteria);  
} 

@Override 
public Lang findBySubdomain(String subdomain) { 
    Criteria criteria = getCriteria(); 
    criteria.add(Restrictions.eq("subdomain", subdomain)); 
    return findByCriteriaFirst(criteria);  
} 

@Override 
public Lang findDefaultLang() { 
    Criteria criteria = getCriteria(); 
    criteria.add(Restrictions.eq("defaultFlag", true)); 
    return findByCriteriaFirst(criteria);  
} 
} 

AlertLog.Java 모델 데이터베이스

@Column(name="alerted", columnDefinition = "TINYINT(1) DEFAULT 0") 
private int alerted; 

: 경고했다 칼럼> TINYINT (1)과 deafult 값 0

DB는 .properties

pom.xml 파일

<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
<artifactId>NC_Core</artifactId> 
<groupId>com.ns.commerce</groupId> 
<version>0.0.1-SNAPSHOT</version> 
</parent> 
<artifactId>NCFrameworkAdmin</artifactId> 
<packaging>war</packaging> 
<name>NCFrameworkAdmin Maven Webapp</name> 
<url>http://maven.apache.org</url> 
<properties> 
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>com.nc.commerce</groupId> 
     <artifactId>NCFramework</artifactId> 
    </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-core</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
     </dependency>      
     <dependency> 
      <groupId>org.springframework.security</groupId>   
      <artifactId>spring-security-config</artifactId>   
     </dependency> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.mail</groupId> 
        <artifactId>mail</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>javax.jms</groupId> 
        <artifactId>jms</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jdmk</groupId> 
        <artifactId>jmxtools</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jmx</groupId> 
        <artifactId>jmxri</artifactId> 
       </exclusion> 
      </exclusions> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
     </dependency> 


     <!-- Joda Time Library --> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
     </dependency> 

     <!-- Jackson JSON Mapper --> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
     </dependency> 

     <!--Regular Expression Libraries --> 
     <dependency> 
      <groupId>oro</groupId> 
      <artifactId>oro</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>jakarta-regexp</groupId> 
      <artifactId>jakarta-regexp</artifactId> 
     </dependency> 

     <!-- Commons validator --> 
     <dependency> 
      <groupId>commons-validator</groupId> 
      <artifactId>commons-validator</artifactId> 
     </dependency>   

     <!-- Tiles --> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
     </dependency> 

     <!-- AOP dependency --> 
     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>c3p0</groupId> 
      <artifactId>c3p0</artifactId> 
     </dependency> 
    </dependencies> 
<build> 
<finalName>NCFrameworkAdmin</finalName> 

필요한 다른 소스가 의견을 주시기 바랍니다

hibernate.hbm2ddl.auto=validate 
#hibernate.hbm2ddl.auto=create-drop 
hibernate.hbm2ddl.import_files=/import_standard.sql 
hibernate.show_sql=false 
hibernate.format_sql=true 
hibernate.generate_statistics=false 
hibernate.use_sql_comments=true 
hibernate.query.factory_class=org.hibernate.hql.ast.ASTQueryTranslatorFactory 
hibernate.cache.use_query_cache=true 
hibernate.cache.region.factory_class=net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory 
hibernate.cache.use_second_level_cache=true 
#------------------------------------------------------------------------------- 
# MySQL Settings 

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/asd?autoReconnect=true 
jdbc.username=asd 
jdbc.password=asd 

# Property that determines which Hibernate dialect/MySQL5Dialect || MySQLDialect 
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 

.

+1

? hibernate를 사용하여 스키마를 생성/업데이트/생성하거나 기존 테이블이 있습니까? 'AlertLog'가'nc_alert_log'에 매핑 된 것 같습니다. 'alerted'의 칼럼 정의를 살펴 보겠습니다. tinyint가 아닌 비트라고 생각합니다. 그러면 에러가 발생합니다. –

+0

사용중인 데이터베이스와 일치하도록 올바른 _dialect_에 대한 최대 절전 모드를 구성했는지 다시 한 번 확인하십시오. –

+0

András : 기존 데이터베이스를 사용하고 있습니다. 이안 : INFO [org.hibernate.cfg.SettingsFactory] - 데이터베이스 -> 이름 : MySQL의 버전 : 5.0.96 - 커뮤니티 - NT 주요 : 5 작은 : 0 2013년 1월 17일 5시 13분 : MySQL-AB JDBC 드라이버 버전 : mysql-connector-java-5.1.12 (수정본 : $ {bzr.revision-id}) major : 5 minor : 1 나는 방언 def를 바꾸려고합니다. 에서부터 hibernate.dialect = org.hibernate.dialect.MySQL5Dialect to hibernate.dialect = org.hibernate.dialect.MySQLDialect,하지만 작동하지 않습니다. – efirat

답변

1
Wrong column type in db.nc_alert_log for column alerted. 
Found: bit, expected: TINYINT(1) DEFAULT 0 

문제가 발생합니다. 데이터베이스에 alerted 열의 유형을 확인하고 AlertLog.java에서 같은 유형을 사용하고 있는지 확인하십시오.

+0

'alerted'를 확인했으며 TININT (1)의 기본값은 0입니다. – efirat

1

nc_alert_log와 LangDao는 직접 관련이 없지만 LangDao와 hibernate sessionFactory는 있습니다. 데이터베이스 정의가 잘못되어 sessionFactory를 작성할 수 없습니다. eror는 데이터베이스의 columntype이 TINYINT가 아니라 BIT (부울)임을 나타냅니다. 이것이 바로 sessionFactory가 시작되지 않는 이유입니다. sesionFactory없이 LangDao 만들 수 없습니다 등 등

+0

"경고"열 "TINYINT (1) DEFAULT 0"의 정의를 "BOOLEAN"으로 변경해야합니까? – efirat

1
private int alerted; 

로 변경해보십시오 : 당신은 DB를 만들려면 어떻게해야합니까

private boolean alerted;