- 26
- 0
bean注入失败
entity:
@Entity
@Table(name = "rolesInfo")
public class JpaRolesInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增
private Integer id;
@Column(length = 15)
private String roleName;//角色名称
private Date time;//出现时间
@Column(length = 2)
private String weight;//角色分量
DynamicRepository:
@Repository
public interface DynamicRepository extends JpaSpecificationExecutor<JpaRolesInfo>{
List<JpaRolesInfo> findAll(Specification<JpaRolesInfo> spec,Integer id,String roleName);
}
JpaDynamicService:
@Service
public class JpaDynamicService {
@Autowired
private DynamicRepository repository;
public List<JpaRolesInfo> findAll(Integer id, String roleName) {
List<JpaRolesInfo> list = repository.findAll((Root<JpaRolesInfo> root, CriteriaQuery<?> query, CriteriaBuilder cb)->{
List<Predicate> predicates = new ArrayList<Predicate>();
if(roleName != null)predicates.add(cb.like(root.get("roleName").as(String.class), "%" + roleName + "%"));
if(id != null)predicates.add(cb.equal(root.get("id").as(Integer.class),id));
return (Predicate) query.where(predicates.toArray(new Predicate[predicates.size()]));
},id,roleName);
return list;
}
}
DemoController:
@RestController
@RequestMapping(value="/api/demo")
public class DemoController {
@Autowired
private JpaDynamicService DyService;
@RequestMapping(value="/test", method = RequestMethod.GET)
public void test() {
//动态查询(null,null)
System.out.println("dynamic query:" + DyService.findAll(null, null));
//动态查询(1,null)
System.out.println("dynamic query:" + DyService.findAll(1, null));
}
错误信息:
Description:
Field repository in com.example.demo.service.JpaDynamicService required a bean of type 'com.example.demo.repository.DynamicRepository' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.example.demo.repository.DynamicRepository' in your configuration.
试了很多方法都不行。。。不知道该怎么写了。。。
- 共 0 条
- 全部回答
-
甜蜜危机 普通会员 1楼
Spring Data JPA 提供了一个名为
JpaSpecificationExecutor的接口,该接口允许我们在 Spring Boot 应用程序中执行复杂的动态查询,而无需编写具体的 SQL 语句。JpaSpecificationExecutor接口定义在org.springframework.data.jpa.repository.SpecificationExecutor中,它为基于 JPA 的 Repository 提供了方法来处理Specification对象。java public interface JpaSpecificationExecutor<T> { List<T> findAll(Specification<T> spec); List<T> findAll(Specification<T> spec, Sort sort); Page<T> findAll(Specification<T> spec, Pageable pageable); T findOne(Specification<T> spec); long count(Specification<T> spec); }这里的
Specification<T>是一个用于构建 WHERE 子句的泛型接口,我们可以根据业务需求自定义条件查询。例如,假设我们有一个
UserRepository继承了JpaRepository和JpaSpecificationExecutor<User>,那么我们可以这样使用:```java public class UserSpecifications {
public static Specification<User> findByUsername(String username) { return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("username"), username); }}
userRepository.findAll(UserSpecifications.findByUsername("admin")); ```
这段代码会生成一个查询所有用户名为 "admin" 的用户记录的 SQL。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
