我尝试使用Sping Boot 创建REST服务,但在服务和存储库之间使用@Autowired
时遇到问题。
回答后编辑:
这是我的代码:
实体名称
import javax.persistence.*;
@Entity
@Table(name= Constants.USERS, schema = Constants.SCHEMA)
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; //<----like this
@Column(name = "username", nullable = false)
private String username;
@Column(name = "lastname", nullable = false)
private String lastname;
public Users() {
}
public Users(String username, String lastname) {
this.username = username;
this.lastname = lastname;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
资料档案库
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UsersRepository extends JpaRepository<Users,Integer> {
public List<Users> findAll();
public long count(); // and no need to define function here
}
服务
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UsersService{
private UsersRepository usersRepository;
@Autowired
public UsersService(UsersRepository usersRepository) {
this.usersRepository = usersRepository;
}
public long count() {
long conteggio = usersRepository.count();
return conteggio;
}
}
这是回溯
Error creating bean with name 'usersService' .Unsatisfied dependency expressed through
constructor paramet
er 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.repository.UsersRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}.
No qualifying bean of type 'com.intesasanpaolo.dsi.core.bear.ptrm0.connector.jpa.UsersRepository' available:
至少应有1个符合自动连接候选条件的Bean。依赖关系注解:{}
2条答案
按热度按时间ztigrdn81#
您的User表中似乎没有任何主键。
JPA要求每个实体都有一个ID。因此不允许没有ID的实体。请尝试添加Integer类型的主键,因为在扩展到JPA存储库时需要它,因为传递的第二个参数是主键的类型。您可以使用
@Id
注解将字段定义为主键。您可以执行以下操作:}
保持存储库不变
此外,您不必在字段上写入@Autowire,因为构造函数会自动将Bean注入字段
此外,我认为您应该像下面这样扩展到JpaRepository,而不是JpaConnector
7uhlpewt2#
尝试删除此构造函数