当我尝试启动应用程序时,我得到以下消息:
“不满意的依赖关系”异常:创建名称为“产品服务”的 Bean 时出错 [C:\Users\Acasa\0 SDA\0 Proiecte 实践\attentive2细节\目标\类\com\示例\attentive2细节\服务\产品服务.class]:通过构造函数参数 0 表示的不满意的依赖关系;嵌套的异常是组织.springframework.bean.factory.Bean创建例外:创建名称为“产品存储库”的 bean 时出错,该名称为“产品存储库”,定义于 com.example.attentive2details.存储库.产品存储库中定义的@EnableJpaRepositories在 Jpa存储库注册表上声明。.EnableJpa存储库配置:初始化方法的调用失败;嵌套的异常是组织.springframework.data.存储库.query创建异常: 无法为公共抽象创建查询.util.List com.example.attentive2details.repositories.ProductRestorey.findByNameStartingWith(java.util.List)!未找到产品类型的属性名称!
这是因为我添加了一个新方法<code>List
申请代码是:
@Data
@Table
@Entity
@AllArgsConstructor
@NoArgsConstructor
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private String produs;
@Column
private Float calories;
}
@Repository
public interface ProductRepository extends JpaRepository<Product, Integer> {
List<Product> findByNameStartingWith(List<Product> string);
}
public interface ProductService {
List<Product> findByNameStartingWith(List<Product> string);
}
@Service
public class ProductServiceImpl implements ProductService {
ProductRepository productRepository;
public ProductServiceImpl(ProductRepository productRepository) {
this.productRepository = productRepository;
}
@Override
public List<Product> findByNameStartingWith(List<Product> string) {
return productRepository.findByNameStartingWith(string);
}
}
@RequestMapping("/api")
@RestController
public class ProductController {
private final ProductService productService;
public ProductController(ProductService productService) {
this.productService = productService;
}
@GetMapping("findProductbyNameStartingWith/produs")
@Query("FROM Product p WHERE p.produs LIKE %:name%")
public List<Product> findProductsbyNameStartingWith(@Param("name") String beginswith) {
List<Product> allproducts = new ArrayList<>( productService.findAll());
List<Product> productsListBeginWith = new ArrayList<>();
for (Product product : allproducts) {
if(product.getProdus().startsWith(String.valueOf(beginswith))){
productsListBeginWith.add(product);
}
}
return productService.findByNameStartingWith(productsListBeginWith);
}
}
应用结构
除了@Faramarz Afzali回答(其实是正确的),请注意以下@Query
没有效果:
@RequestMapping("/api")
@RestController
public class ProductController {
(...)
@GetMapping("findProductbyNameStartingWith/produs")
@Query("FROM Product p WHERE p.produs LIKE %:name%")
public List<Product> findProductsbyNameStartingWith(@Param("name") String beginswith)
(...)
}
@Query
必须在存储库方法中使用,而不是在控制器或服务中使用。
正如你的日志所提到的
com . example . attentive 2 details . repositories . product repository . findbynamestartingwith(Java . util . list)!找不到Produs类型的属性名!
您编写了findByNameStartingWith
,但您的模型中没有name
字段。Jpa在您的实体类中找不到此属性。您应该将name
属性放在模型中或将查询更改为另一个字段,例如findByProdusStartingWith
或findByCaloriesStartingWith
。
问题内容: 几天来,我一直在尝试创建Spring CRUD应用程序。我糊涂了。我无法解决此错误。 还有这个 客户端控制器 ClientServiceImpl 客户资料库 我浏览了许多类似的问题,但是没有人回答不能帮助我。 问题答案: ClientRepository应该用标记注释。使用你当前的配置,Spring将不会扫描该类并对其有所了解。在启动和连接时,找不到ClientRepository类。
还有这个 UnsatisfiedDependencyException:创建名为“Client Service”的bean时出错:通过字段“Client Repository”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:没有“com.kopylov.repository.clien
引导类: 有人能帮我解决问题吗?
我正在尝试使用spring boot和JPA实现一个服务器。 模型类: 存储库: 资源:
问题内容: 我将所有的XML Spring配置都转换为Java代码配置,但是由于我有一个丑陋的异常,所以我无法运行我的所有测试(它们之前都曾进行过测试): 这是我的测试课: 和我的: 我在测试课上尝试了推子,但这没用。该项目是Spring MVC项目,但是现在我仅测试服务层,所以为什么要在我的课程上放置该注释?即使有了该注释,也会出现另一个错误。那么,这里发生了什么? 问题答案: 您的配置很好,除
问题内容: 我正在使用Springframework和Tomcat创建一个简单的REST服务。响应应该像{“ id”:“ 101”,“ name”:“ Ram”}之类的json中。每次运行时,出现以下错误 从这里开始,以下是我的Java代码和xml文件。 POM.xml web.xml front-controller-servlet.xml json / User.java json / Use