2016-06-01 8 views
0

Ich bin gerade dabei, JPA in mein Projekt zu integrieren, das ich zuvor HibernateTemplate verwendet habe.Ich kann JpaRepository in DAO nicht autowire

Ich habe folgendes zu konfigurieren:

@Configuration 
@EnableJpaRepositories("package1, package2") 
@EnableTransactionManagement 
public class JpaConfiguration { 


    @Bean 
    public EntityManagerFactory entityManagerFactory(){ 

     HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 

     vendorAdapter.getJpaDialect(); 

     LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
     factory.setJpaVendorAdapter(vendorAdapter); 
     factory.setPackagesToScan("package1, package2"); 
     factory.afterPropertiesSet(); 

     return factory.getObject(); 
    } 

Unten ist die Klasse I aus dem Repository zu nennen bin versucht, aber ich erhalte eine Fehlermeldung, wenn ich über den Anruf schweben sagen: no-static field applicantEntryRepository cannot be referenced from a static context.

public static PsHeldSkillEntry retrievePsHeldSkillEntry(SkillEntry primaryKey) throws DataAccessException { 
    //HibernateTemplate ht = new HibernateTemplate(ComponentBuilder.getSessionFactory()); 

    //SkillEntry skill = ht.get(SkillEntry.class, primaryKey); 

    SkillEntry skill = applicantEntryRepository.getOne(primaryKey); 

    return skill; 
} 


} 

applicantEntryRepository ist an der Spitze der Klasse autowired wie so:

@Controller 
public class ApplicantEntryDAO { 

    @Autowired 
    ApplicantEntryRepository applicantEntryRepository; 

Repository

public interface ApplicantEntryRepository extends JpaRepository<SkillEntry,Long> { 


} 

Enitiy:

@Entity 
@Table(name = "HELD_SKILL") 
@IdClass(SkillEntryPK.class) 
public class SkillEntry 
{ 

Antwort

0

Ihr Problem auf autowiring ist oder Feder ist nur Java Problem, Ihr applicantEntryRepository Aufruf, die innerhalb einer statischen Methode nicht statisch ist, werden Sie diese Variable statisch erste

@Controller 
public class ApplicantEntryDAO { 

@Autowired 
static ApplicantEntryRepository applicantEntryRepository; 
machen müssen