我正在尝试使用 Spring Boot 中的泛型类在 JPA 中制作 CRUD。但是当我尝试运行程序时,它会给出以下错误。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityRepo': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Not a managed type: class java.lang.Object
Caused by: java.lang.IllegalArgumentException: Not a managed type: class java.lang.Object
实体控制器.java
@Autowired
private EntityService<Myuser, Long> userService;
@RequestMapping(value = "/", method = RequestMethod.GET)
public void saveEntity() {
Myuser user = new Myuser("pawam");
userService.saveEntity(user);
}
实体服务
public interface EntityService<T, ID> {
public T saveEntity(T t);
}
我的用户
@Entity
@Table(name = "myuser")
public class Myuser {
private Long id;
private String name;
public Myuser() {
super();
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Myuser(String name) {
super();
this.name = name;
}
}
实体回购.java
@Repository
public interface EntityRepo<T, ID> extends CrudRepository<T, ID> {
}
EntityServiceImpl.java
@Service
public class EntityServiceImpl<T, ID> implements EntityService<T, ID> {
@Autowired
private EntityRepo<T, ID> repo;
@Override
public T saveEntity(T t) {
return repo.save(t);
}
}
应用程序属性
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=12345
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
我试图在EntityRepo.java中将@Repository更改为@NoRepositoryBean。但这也没有用。我该怎么做才能解决这个问题?任何帮助,不胜感激。
步骤 1:更改实体服务
public interface EntityService {
<S> S saveCustom(S entity);
}
第 2 步:将实体服务导入更改为存储库并实现保存方法
@Repository
public class EntityServiceImpl implements EntityService {
@PersistenceContext
private EntityManager entityManager;
@Override
@Transactional
public <S> S saveCustom(S entity) {
entityManager.persist(entity);
return entity;
}
}
步骤 3:从实体存储库中删除@Repository
public interface EntityRepo extends JpaRepository<Myuser, Long> ,EntityService {
}
第 4 步:更改控制器
@Autowired
private EntityRepo userService;
现在,您可以使用以下方法保存任何实体类型
userService.saveCustom(XYZ);