在命令行中运行spring boot后,出现以下错误:https://egkatzioura.com/2016/06/03/add-custom-functionality-to-a-spring-data-repository/
我的项目soruce代码位于github上:https://github.com/b3nhysteria/exprole_spring
该问题正在申请中:
System.out.println("============"+customerService.getListTransactionByCustomer());
正在使用的实现是
public String getListTransactionByCustomer (){
return customerRepository.getAllTransaction();
}
在为方法添加了自定义repo实现之后,即使只是为了返回消息而进行了更改,我仍然遇到了问题。
如果有人有同样的建议,我会试试
顺便说一句,这个脚本是用来探索/学习的。
在CustomerRepository中,您可以扩展TransactionRepostom
public interface CustomerRepository extends JpaRepository<Customer, CustomerId>, TransactionRepoCustom {
// ...
}
因此,Spring试图找到在TransactionRepoCustom中声明的方法getAllTransaction()的实现(但未能找到)。
要解决此问题,您需要:
遵循第一种方法,它将类似于:
public class TransactionRepoCustomImpl implements TransactionRepoCustom {
@Override
public String getAllTransaction() {
return "logic for your custom implementation here";
}
}
按照最后一种方法,它将是:
public interface TransactionRepoCustom {
public default String getAllTransaction() {
return "Not implemented yet!"; // of course, this is just a naive implementation to state my point
}
}
附加说明:
发生这种情况是因为Spring使用由其实现的接口提供的
CustomerRepository
的幕后默认(方法)实现。例如,Jparepository
接口就是这种情况:您可以使用CusterRepository.findAll()
,并且您没有在CustomerRepository
中声明(也没有实现)该方法(它取自Jparepository
的实现,很可能打包在依赖项中为您提供)。
现在,当您创建自己的接口(
TransactionRepoCustom)并由CustomerRepository实现时,Spring会尝试找到TransactionRepoCustom中声明的所有方法的实现。由于您没有提供任何,spring无法为您创建该bean。
在本例中,通过我提供的修复,Spring找到了该方法的一个实现,因此它可以为您创建bean。
最后,我说建议为该方法提供一个实现,因为在Spring中执行操作的方法是在接口中声明方法,并在其他类中提供它们的实现(该接口的默认实现)。在这种情况下,您可以为此创建一个单独的类,或者在CustomerRepository中实现getAllTransaction方法。
当只有一个方法(可论证)时,可以在同一接口中声明默认实现,但如果接口增长,则很难维护。
我是Java和OOD的新手&一直在尝试为一个小的JDBC项目编写一些测试,但在让测试进入绿色光时遇到了一些问题。这就是我开始的地方,玩了很多次都没有效果。 下面是我的测试: 我的刀: 我的客户类:
我从excel表格中提取旧记录,并将它们移动到数据库中。 我有一张客户表和一张订单表。 customers表包含customer\u id---主键---自动递增First\u Name Last\u Name字段 orders表包含以下字段:customer_id(空将是customers表的外键)First_Name(已填充)Last_Name(已填充) 我需要从customers表中逐行选择
我试图创建一个post方法,以便将数据存储到mongoDb中,但是当我通过postman发送post请求时,出现了一个类型错误 我已经通过npm更新了软件包,但错误保持不变 类型错误:无法读取属性'Customer_id'的未定义在exports.create_customer(C:\用户\jawad\桌面\nodejspactise\控制器\admin.controll.js:64: 31)在L
现在来考虑 Customer,Order, LineItem 和 Product 关系的模型。Customer 和 Order 之间 是一对多的关系,但是我们怎么来描述 Order / LineItem / Product呢? 我可以把 LineItem 作为描述 Order 和 Product 多对多关系的关联类,在 Hibernate,这叫做组合元素。 映射文件如下: <hibernate-
问题内容: 在服务器中执行SQL脚本 错误:错误1628:表’customer’的注释太长(最大值= 60) 脚本: 评论 ‘表存储所有客户。拥有指向该客户注册的地址表和商店表的外键。\ n \ n有关客户的基本信息(例如名字和姓氏)存储在表本身中。创建记录的日期和信息的最后更新时间相同。 SQL脚本执行完成:语句:成功3次,失败1次 问题答案: As stated in the MySQL do
在本主题中,我提出了一个问题:Laravel 5.2 auth change“users”表 但现在我的问题变了。默认情况下,用户表具有id。但是我想要一个客户id,所以我改变了一切,但它不起作用。它不断要求id。 SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“id”(SQL:select*from