我想使用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";
}
}
答案 0 :(得分:0)
由于错误,无法创建LocationRepository
bean。从您的代码LocationRepository
起,Spring IOC无法使用。
用@Repository
注释存储库,以便spring创建Bean。
根据评论更新答案:
根据堆栈跟踪QuerySyntaxException: location is not mapped
,未创建Location
实体。因此,要么创建它,要么使用@Query(nativeQuery=true)