2016-08-04 2 views
0

Im создания весны загрузки приложения. Я хочу сохранить свой testEntity в базе данных. Im после этого учебника: https://spring.io/guides/gs/accessing-data-jpa/ Стол должен быть создан автоматически для сохранения Entity.Как создать объект и сохранить его в базе данных?

Однако, когда я пытаюсь запустить его как Spring Booot App им получать follwoing ошибки:

Error creating bean with name 'demo' defined in backend.Application: Unsatisfied dependency expressed through constructor argument with index 0 of type [test.EntityRepo]: : No qualifying bean of type [test.EntityRepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [test.EntityRepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. 

No qualifying bean of type [test.EntityRepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 

Пожалуйста, объясните, что я делаю неправильно и как это исправить?

Ниже вы можете найти конфигурацию и классы данных.

application.properties:

spring.datasource.url=jdbc:oracle:thin://localhost:1521/orcl 
spring.datasource.username=HR 
spring.datasource.password=orcl 


spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver 
spring.jpa.hibernate.ddl-auto=create-drop 
spring.jpa.properties.hibernate.globally_quoted_identifiers=true 
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect 
spring.jpa.show-sql=true 

testEntity:

package test; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import org.springframework.data.annotation.Id; 



@Entity 
public class testEntity { 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private long ID; 

private String name; 

public testEntity() {} 

public testEntity(long iD) { 
    ID = iD; 
} 

public testEntity(String name) { 
    this.name = name; 
} 

public long getID() { 
    return ID; 
} 

public void setID(long iD) { 
    ID = iD; 
} 

public String getName() { 
    return name; 
} 

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

} 

entityRepository:

package test; 

import java.util.List; 

import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface EntityRepo extends CrudRepository<testEntity, Long>{ 
List<testEntity> findByName(String name); 
} 

JPA Класс конфигурации:

@Configuration 
@EnableJpaRepositories 
@EnableTransactionManagement 
class JpaConfiguration { 

    @Bean 
    public DataSource dataSource() { 

    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); 
    return builder.setType(EmbeddedDatabaseType.H2).build(); 
} 

@Bean 
public EntityManagerFactory entityManagerFactory() { 

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
    vendorAdapter.setGenerateDdl(true); 

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
    factory.setJpaVendorAdapter(vendorAdapter); 
    factory.setPackagesToScan("test"); 
    factory.setDataSource(dataSource()); 
    factory.afterPropertiesSet(); 

    return factory.getObject(); 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager() { 

    JpaTransactionManager txManager = new JpaTransactionManager(); 
    txManager.setEntityManagerFactory(entityManagerFactory()); 
    return txManager; 
    } 
} 

класс с основным:

@EnableSwagger2 
@SpringBootApplication 
@EnableMapRepositories 
public class Application extends WebMvcConfigurerAdapter { 

    public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 



@Bean 
public void demo(EntityRepo repository){ 
    repository.save(new testEntity("jack")); 
} 

ответ

0

Попробуйте это:

@Autowired 
public void demo(EntityRepo repository){ 
    repository.save(new testEntity("jack")); 
} 
+0

не помогло, такие же ошибки отображаются –

+0

сохраните свой демонстрационный метод, как указано выше, и удалите @Repository из вашего интерфейс. очистите свой проект и снова запустите. –

+0

Если вы не можете использовать мой код здесь: (обратите внимание: его градиент, но вы можете преобразовать его в maven) https://drive.google.com/file/d/0B_EVyl90ivXwbHlXZDNwcGg5eHM/view –

0

Попробуйте:

@Autowired 
@Qualifier("demo") 
public void demo(EntityRepo repository){ 
    repository.save(new testEntity("jack")); 
} 


@Repository("entityRepo") 
public interface EntityRepo extends CrudRepository<testEntity, Long>{ 
List<testEntity> findByName(String name); 
} 
+0

еще такой же проблема появляется –

+0

ответ обновленный .. – FuSsA

+0

не решал проблему –

0

Найдено решение. Класс JpaConfig был включен в пакет по умолчанию и не указан путь toit, перемещение файла JpaConfig в пакет с исправлением Aplication, проблема

Смежные вопросы