这是我的服务课
package com.example.demo.service;
import com.example.demo.dto.Invoicedto;
import com.example.demo.model.Item;
import com.example.demo.repository.ItemRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class InvoiceService implements InvoiceServiceInterface {
@Autowired
private ItemRepository itemRepository;
public void createInvoice(Invoicedto invoiceDto) {
try {
List<Item> itemList = this.itemRepository.findAll();
for (Item item : itemList) {
System.out.println(item.getId());
}
} catch (Exception e) {
System.out.println("Exception occurred " + e.getMessage());
}
}
}
这是我的仓库
package com.example.demo.repository;
import com.example.demo.model.Item;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
public interface ItemRepository extends JpaRepository<Item, Long> {
List<Item> findAll();
@Modifying
@Query("DELETE Item c WHERE c.id = ?1")
void deleteById(long id);
}
虽然我添加了必要的注解,但这总是给予
出现异常无法调用“com.example.demo.repository.itemRepository.findAll()”,因为“此.itemRepository”为空
为什么会发生这种情况,解决办法是什么?
4条答案
按热度按时间li9yvcax1#
可能是由于您的包结构,Spring组件扫描没有找到您的存储库bean。
确保带有
@SpringBootApplication
注解的主类在此包中:package com.example.demo;
uelo1irk2#
这里有两件事我可以看到你的代码是不需要的。
到
1.由于您正在扩展
JpaRepository
,因此不需要在存储库接口中声明findAll()
和deleteById()
方法。因此,请按如下所示进行更改并尝试一次。引用:查找所有删除按Id
im9ewurl3#
9jyewag04#
您可以尝试手动指定存储库的目录: