Проблема в JFreeChart и Hibernate - PullRequest
1 голос
/ 12 июля 2020

Может ли кто-нибудь помочь мне решить эту проблему? Я пытаюсь создать диаграмму, используя базу данных гибернации, но получаю сообщение об ошибке l oop «фактические и формальные списки аргументов различаются по длине». Я пытаюсь найти эту ошибку в Интернете, но не могу ее решить. Решил обратиться за помощью отсюда. Любая помощь будет принята с благодарностью

Вот код для моего класса сущности:

class Student1
{
    private int rno,marks1,marks2,marks3;
    private String name;

public Student1() {  }

public Student1(int rno,String name,int marks1,int marks2,int marks3)
{
    this.rno = rno;
    this.name = name;
    this.marks1 = marks1;
    this.marks2 = marks2;
    this.marks3 = marks3;

 //getter and setters
}

Вот код схем методов:

public static void chartsStudent()
{

    DefaultCategoryDataset d1 = new DefaultCategoryDataset();

    Configuration cfg = new Configuration();
    cfg.configure("hibernate.cfg.xml");

    SessionFactory sfact = cfg.buildSessionFactory();
    Session session = null;

    try
    {
        session = sfact.openSession();
        System.out.println("connected");
        session.beginTransaction();

        List<Student1> student1list = new ArrayList<>();
        student1list = session.createQuery("from Student1").list();
        
        for(Student1 b : student1list)
        {
            d1.setValue(b.getName(),b.getMarks1(),b.getMarks2(),b.getMarks3());
        }
        
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
    finally
    {
        if (session !=null)
        {
            session.close();
            System.out.println("disconnected");
        }
    }
JFreeChart chart = ChartFactory.createBarChart("Student Preformance",
"Subjects","Marks",d1,PlotOrientation.VERTICAL,true,true,false);
int width = 400;
int height = 400;
}

ERROR ИЗОБРАЖЕНИЕ ОШИБКИ

1 Ответ

1 голос
/ 13 июля 2020

Как отмечалось здесь , мутаторы DefaultCategoryDataset, которые добавляют или устанавливают значение, принимают три параметра, а не четыре . Каждый value - это Number, представляющий интерес, каждый rowKey - это серия, а каждый columnKey - элемент в серии. Например,

public void setValue(double value, Comparable rowKey, Comparable columnKey)

В зависимости от вашего класса Student каждое значение представляет собой оценку / отметку, каждая серия (rowKey) - имя учащегося, а каждый элемент (columnKey) - это назначение / тест.

d1.setValue(b.getMarks1(), b.getName(), "Test1");
d1.setValue(b.getMarks2(), b.getName(), "Test2");
…

В качестве альтернативы, JDBCCategoryDataset строит CategoryDataset из запроса SQL за один шаг; источник является примером; больше можно найти здесь .

...