使用jfree图表从mysql数据库生成饼图时出错

时间:2019-02-04 03:29:03

标签: java spring-boot

我想使用jfree图表和mysql数据库中的数据创建一个饼图,但是我似乎遇到了错误。这是我的代码。

我有一个LocationRepository,可在其中实现我的SQL查询

nil

我还具有以下ReportUtility界面

   public interface LocationRepository extends JpaRepository<Location, Integer> {

       //hibernate query language (jpql)
       @Query("select type,count(type) from location group by type")
       public List<Object[]> findTypeAndTypeCout();

      }

这是我的ReportUtility实施类

   public interface ReportUtil {

      void generatePieChart(String path, List<Object[]> data);

      }

最后是控制器

  @Component
  public class ReportUtilImpl implements ReportUtil {

    @Override
    public void generatePieChart(String path, List<Object[]> data) {
    // TODO Auto-generated method stub

    DefaultPieDataset dataset = new DefaultPieDataset();
    for (Object[] objects : data) {
        dataset.setValue(objects[0].toString(), new Double(objects[1].toString()));
    }

    JFreeChart chart = ChartFactory.createPieChart3D("Location Type Report", dataset);

    try {
        ChartUtilities.saveChartAsJPEG(new File(path+"/pieChart.jpeg"), chart, 300, 300);
    } catch (IOException e) {

        e.printStackTrace();
    }
  }

}

现在,当我将其作为springboot应用程序运行时,会出现以下错误

   @Controller
    public class LocationController {

  @Autowired
  LocationService service;

  @Autowired
  LocationRepository repository;

  @Autowired
  ReportUtil reportUtil;

  @Autowired
  ServletContext sc;

  @RequestMapping("/generateReport")
   public String generateReport() {
     String path = sc.getRealPath("/");
     List<Object[]> data = repository.findTypeAndTypeCout();
     reportUtil.generatePieChart(path, data);
     return "report";

        }

     }

1 个答案:

答案 0 :(得分:0)

由于错误,无法创建LocationRepository bean。从您的代码LocationRepository起,Spring IOC无法使用。 用@Repository注释存储库,以便spring创建Bean。

根据评论更新答案:

根据堆栈跟踪QuerySyntaxException: location is not mapped,未创建Location实体。因此,要么创建它,要么使用@Query(nativeQuery=true)