0

我已经使用gradle创建了弹簧启动数据jpa应用程序,我的项目结构看起来像下图所示。我无法运行弹簧启动

com.duregesh

--TestSpringBootDataJpaApplication.java 

com.durgesh.controller

--UserController.java 

com.durgesh.model

--User.java 

com.durgesh.repositories

--UserJpaRepository.java 

com.durgesh.services

--UserServiceImpl.java 

当我乳宁例外以下春天启动的点火 说明:

场userJpaRepository在COM .durgesh.services.UserServiceImpl需要一个名为'emf'的bean无法找到。

操作: 考虑在您的配置中定义一个名为'emf'的bean。


@SpringBootApplication 
public class TestSpringBootDataJpaApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(TestSpringBootDataJpaApplication.class, args); 
    } 
------------- 
public interface UserJpaRepository extends JpaRepository<User, Long> {} 
------------- 
@Entity 
@Table(name = "USER") 
public class User implements Serializable{ 
     @Id 
     private Long id; 
     @Column(unique = true) 
     private String uid; 
     private String password; 
     public Long getId() { 
      return id; 
     } 
     public void setId(Long id) { 
      this.id = id; 
     } 
     public String getUid() { 
      return uid; 
     } 
     public void setUid(String uid) { 
      this.uid = uid; 
     } 
     public String getPassword() { 
      return password; 
     } 
     public void setPassword(String password) { 
      this.password = password; 
     } 
     } 
---------------- 
@Service 
@EnableJpaRepositories(basePackages="com.construction.de.*", entityManagerFactoryRef="emf") 
public class UserServiceImpl implements UserService { 
    @Autowired 
    private UserJpaRepository userJpaRepository; 
    @Override 
    public User add(final User user) { 
     return userJpaRepository.save(user); 
    } 
    @Override 
    public User findById(final Long id) { 
     final User user = userJpaRepository.findOne(id); 
      return user; 
    } 
} 
---- 
@RestController 
@RequestMapping("/user") 
public class UserController { 
    @Autowired 
    private UserService userService; 
    @RequestMapping(value ="/",method = RequestMethod.POST) 
    public User add(@RequestBody final User user){ 
     return userService.add(user); 
    } 
    @RequestMapping(value ="/{id}",method = RequestMethod.GET) 
    public User findById(@PathVariable("id") final Long id){ 
     return userService.findById(id);   
    } 
} 
+0

如果正在usring UserJpaRepository.java直接在UserController.java工作正常 – Raj

+0

@SpringBootApplication public class TestSpringBootDataJpaApplication { \t public static void main(String [] args){ \t \t SpringApplication.run(TestSpringBootDataJpaApplication.class,args); \t} – Raj

+0

你怎么配置春天! ..在bean配置中似乎是一个问题。你有任何名为'emf'的bean可能是你的EntityManagerFactory ..你是如何将它连接到你的dao – Sagar

回答

0

问题是与你的数据库entityManager配置它们,您需要按照下面的步骤:

(1)提供@EnableJpaRepositories到如下图所示的应用程序类(从服务中删除)。

@SpringBootApplication 
@EnableJpaRepositories(basePackages="com.duregesh.*") 
public class TestSpringBootDataJpaApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(TestSpringBootDataJpaApplication.class, args); 
} 

(2)提供在application.properties(在服务器下蚀src/main/resourcesWEB-INF/classes文件夹),被配置数据库驱动程序和连接属性,如下所示:

spring.datasource.url: YOUR_DB_URL 
spring.datasource.driverClassName: YOUR_DB_DRIVER_CLASS 
spring.datasource.username: YOUR_DB_USER 
spring.datasource.password: YOUR_DB_PWD 
+0

仍然面临同样的问题 – Raj

+0

相同的类在maven项目中工作正常 – Raj

+0

您需要这样做::: @EnableJpaRepositories(basePackages =“com.duregesh。*”) – developer