2017-08-27 1 views
-1

Mein Category.java ist:org.springframework.beans.factory.UnsatisfiedDependencyException: für die Bean categoryDAO

package shoppingbackend.dto; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

@Entity 
public class Category { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id; 
    private String name; 
    private String description; 
    @Column(name = "img_URL") 
    private String imageURL; 
    @Column(name = "is_active") 
    private boolean active = true; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public String getImageURL() { 
     return imageURL; 
    } 

    public void setImageURL(String imageURL) { 
     this.imageURL = imageURL; 
    } 

    public boolean isActive() { 
     return active; 
    } 

    public void setActive(boolean active) { 
     this.active = active; 
    } 

    @Override 
    public String toString() { 
     return "Category [id=" + id + ", name=" + name + ", description=" + description + ", imageURL=" + imageURL 
       + ", active=" + active + "]"; 
    } 

} 

Mein CategoryDAO.java ist:

package shoppingbackend.dao; 
import java.util.List; 
import shoppingbackend.dto.Category; 
public interface CategoryDAO { 
List<Category> list(); 

Category getId(int id); 
boolean addCategory(Category category); 
boolean updateCategory(Category category); 
boolean deleteCategory(Category category); 
} 

Mein CategoryDAOImpl ist:

package shoppingbackend.daoimpl; 

import java.util.List; 

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

import shoppingbackend.dao.CategoryDAO; 
import shoppingbackend.dto.Category; 

@Repository("categoryDAO") 
@Transactional 
public class CategoryDAOimpl implements CategoryDAO{ 

    @Autowired 
    private SessionFactory sessionFactory; 
    //private static List<Category> categories= new ArrayList<>(); 

    @Override 
    public List<Category> list() { 
     String selectActiveCategory="FROM Category WHERE active=:active"; 
     Query query=sessionFactory.getCurrentSession().createQuery(selectActiveCategory); 
     query.setParameter("active", true); 

     return query.getResultList(); 
    } 
    @Override 
    public Category getId(int id) { 

     return sessionFactory.getCurrentSession().get(Category.class,Integer.valueOf(id)); 

    } 
    @Override 
    @Transactional 
    public boolean addCategory(Category category) { 
     // TODO Auto-generated method stub 
     try 
     { 
     sessionFactory.getCurrentSession().persist(category); 
     return true; 
     } 

     catch(Exception e) 
     { 
      System.out.println("from session catch"); 
      e.printStackTrace(); 
      return false; 
     } 

    } 
    @Override 
    public boolean updateCategory(Category category) { 
     try 
     { 
     sessionFactory.getCurrentSession().update(category); 
     return true; 
     } 

     catch(Exception e) 
     { 
      System.out.println("from session catch"); 
      e.printStackTrace(); 
      return false; 
     } 

    } 
    @Override 
    public boolean deleteCategory(Category category) { 
     category.setActive(false); 
     try 
     { 
      System.out.println("inside try part"); 
     sessionFactory.getCurrentSession().update(category); 
     return true; 
     } 

     catch(Exception e) 
     { 
      System.out.println("from session catch"); 
      e.printStackTrace(); 
      return false; 
     } 
    } 

} 

und mein Testcase ist:

package shoppingbackend.test; 

import static org.junit.Assert.assertEquals; 

import org.junit.BeforeClass; 
import org.junit.Test; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 

import shoppingbackend.dao.CategoryDAO; 
import shoppingbackend.dto.Category; 

public class CategoryTestCase { 


    private static AnnotationConfigApplicationContext context; 
    private static CategoryDAO categoryDAO; 
    private static Category category; 


    @BeforeClass 
    public static void init() 
    { 
     context=new AnnotationConfigApplicationContext(); 
     context.scan("shoppingbackend"); 
     context.refresh(); 
categoryDAO=(CategoryDAO)context.getBean("categoryDAO"); 

    } 
    @Test 
    public void testUpdateCategory() 
    { 
     category=categoryDAO.getId(17); 
     category.setName("tubelight"); 
     System.out.println(category); 
     assertEquals("successfully updated a category",true,categoryDAO.updateCategory(category)); 
    } 

} 

meine Hibernate Config Datei ist:

package shoppingbackend.config; 

import java.util.Properties; 

import javax.sql.DataSource; 

import org.apache.commons.dbcp2.BasicDataSource; 
import org.hibernate.SessionFactory; 
//mport org.apache.tomcat.jdbc.pool.DataSource; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.orm.hibernate5.HibernateTransactionManager; 
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 

@Configuration 
@ComponentScan(basePackages="{shoppingbackend.dto}") 
@EnableTransactionManagement 
public class HibernateConfig { 

    private static final String DATABASE_URL="jdbc:h2:tcp://localhost/~/onlineshopping"; 
    private static final String DATABASE_DRIVER="org.h2.Driver"; 
    private static final String DATABASE_DIALECT="org.hibernate.dialect.H2Dialect"; 
    private static final String DATABASE_USERNAME="sid"; 
    private static final String DATABASE_PASSWORD=""; 

    @Bean 
    public DataSource getDataSource() 
    { 
     BasicDataSource dataSource =new BasicDataSource(); 
     dataSource.setDriverClassName(DATABASE_DRIVER); 
     dataSource.setUsername(DATABASE_USERNAME); 
     dataSource.setUrl(DATABASE_URL); 
     dataSource.setPassword(DATABASE_PASSWORD); 
     return dataSource; 

    } 
    //always take care of the hibernate version u are using m using 5 so my Builder will also be of 5 
    @Bean 
    public SessionFactory getSessionFactory(DataSource dataSource) 
    { 
     LocalSessionFactoryBuilder builder= new LocalSessionFactoryBuilder(dataSource); 
     builder.addProperties(getHibernateProperties()); 
     builder.scanPackages("shoppingbackend.dto"); 

    return builder.buildSessionFactory(); 
    } 
    private Properties getHibernateProperties() { 
     Properties properties=new Properties(); 
     properties.put("hibernate.dialect",DATABASE_DIALECT); 
     properties.put("hibernate.show_sql","true"); 
     properties.put("hibernate.format_sql","true"); 

     return properties; 

    } 



    @Bean 
public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) 
{ 
     HibernateTransactionManager hibernateTransactionManager= new HibernateTransactionManager(sessionFactory); 
return hibernateTransactionManager; 
} 
} 

und mein pom.xml ist:

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>onlineshopping</groupId> 
    <artifactId>onlineshopping</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.5.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>3.0.0</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <properties> 
    <javaee.version>7.0</javaee.version> 
    <spring.version>4.3.8.RELEASE</spring.version> 
    <hibernate.version>5.2.7.Final</hibernate.version> 
    </properties> 
    <dependencies> 

    <!-- adding backend here --> 
<!-- the below idea failed maybe due to the war packaging --> 
<!-- <dependency> 
    <groupId>shoppingbackend</groupId> 
    <artifactId>shoppingbackend</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </dependency> --> 
    <!-- adding backend here --> 

    <!-- h2 database --> 
    <dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.196</version> 
    </dependency> 

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

    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
     <exclusion> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-dbcp2</artifactId> 
     <version>2.1.1</version> 
     <exclusions> 
     <exclusion> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 

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

    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>1.7.24</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>2.0.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>6.0.1.Final</version> 
    </dependency> 
    <!-- <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> --> 
    </dependencies> 
</project> 

Bitte helfen . Ich stecke seit vielen Tagen darin fest und bin völlig neu im Winterschlaf.

Die gesamte Konsole Fehler ist:

Ausnahme während Kontext Initialisierung aufgetreten - Cancelling Refresh-Versuch: org.springframework.beans.factory.UnsatisfiedDependencyException: Fehler Bean mit dem Namen 'categoryDAO' zu erstellen: Unbefriedigend Abhängigkeit ausgedrückt durch Feld 'sessionFactory'; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler Erstellen von Bean mit dem Namen 'getSessionFactory' definiert in shoppingbackend.config.HibernateConfig: Bean Instanziierung über die Factory Methode fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.BeanInstantiationException: Fehler beim instantiate [org.hibernate.SessionFactory]: Factory-Methode 'getSessionFactory' warf Ausnahme; verschachtelte Ausnahme ist org.hibernate.cfg.beanvalidation.IntegrationException: Fehler Aktivierung Bean Validation Integration 15.46.11.107 o.s.c.a.AnnotationConfigApplicationContext

Antwort

0

Wenn Sie Hibernate-Validator verwenden Sie die javax.validation Abhängigkeit zu entfernen.

Für weitere Informationen: Project set up

+0

aber es funktionierte gut früher damit ... a nd ich habe versucht, aber kein Glück .. –

+0

Haben Sie die Ursache der Excepción? Vielleicht finden Sie dort weitere Informationen –

+0

Entschuldigung, ich habe es nicht zu haben .. Ich habe nur versucht, den Testfall zu laufen, und ich sah den Fehler, den ich oben erwähnt .. –

0

ersetzt dieses

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>6.0.1.Final</version> 
    </dependency> 

durch diese:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>5.2.0.Final</version> 
    </dependency> 

und alles wie vorher funktioniert .... Ich weiß nicht, warum die 6.0.2 Version funktionierte gut früher ....

Verwandte Themen