Mysql таблицы объектов списка в массив строк по System.arraycopy получил ArrayStoreException?

0

Я пытаюсь пример в java с помощью Mysql, Hibernate. Я создал 2 таблицы в Mysql с именем table1, table2. Каждый из них имеет 3 столбца table1. rowindex, table1. column1, table1. column2 table2. rowindex, table2. column1, table2. column2

Сцена равна 1. Иногда значение table1.column1 равно table2.column2. 2. Он найдет значение table1.column2.

Поэтому запрос, который я использовал

SELECT a.column1, b.column1, a.column2, b.column2 FROM table1 a, table2 b where a.column1 = b.column1 and a.column2 ='Mandar';

Он показывает мне точный результат в Workbench Mysql. Затем я написал java-программу для получения этого результата и попытался его распечатать.

Я написал функцию извлечения таблицы следующим образом:

protected static List get_combined_two_tables(String string) {
    if (resultList != null) {
        resultList.clear();
    }
    flag_file = filecheckhibernate1(false);
    if (flag_file) {
        session = HibernateUtil.getSessionFactory("hibernate1.cfg.xml").openSession();
        if (session != null) {
            if (session.isOpen() == true) {
                try {
                    session.beginTransaction();
                } catch (TransactionException e) {
                    e.printStackTrace();

                } catch (JDBCConnectionException e) {
                    e.printStackTrace();

                }
                String selectQuery = "SELECT a.column1, b.column1, a.column2, b.column2 FROM table1 a, table2 b where a.column1 = b.column1 and a.column2 =:name";
                System.out.println("selectQuery = " + selectQuery);
                Query q = null;
                try {
                    q = session.createQuery(selectQuery);
                    q.setString("name", "Mandar");
                } catch (org.hibernate.QueryException e) {
                    e.printStackTrace();
                }
                if (q != null) {
                    resultList = q.list();
                    session.getTransaction().commit();
                }
                if (session.isOpen()) {
                    session.close();
                }

            }
        }
    }
    return resultList;
}

Для печати я написал следующую функцию: -

                        List<?> combined_table_List = null;
                    combined_table_List = get_combined_two_tables("Mandar");
                    if(combined_table_List != null) {
                        String[] dest = null;
                        for (int i = 0; i < combined_table_List.size(); i++) {
                                dest = new String[combined_table_List.get(i).toString().length()];
                                if(dest != null) {
                                    try {
                                        System.arraycopy(combined_table_List,0,dest,0,combined_table_List.get(i).toString().length());
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                        if(Arrays.toString(dest) != null) {
                                             System.out.println("Arrays.toString(dest) ="+Arrays.toString(dest));
                                        }   
                                }

                        }   
                    }

Когда я запускаю программу, я получаю исключение:

java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at test_db$1.run(test_db.java:132)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Arrays.toString(dest) =[null, null, null, null, null, null, null, null, 
null, null, null, null, null, null, null, null, null, null, null, null, 
null, null, null, null, null, null, null, null]

Нужна помощь, чтобы решить эту проблему.

Теги:
hibernate

1 ответ

0

Список, возвращаемый вашим get_combined_two_tables, будет представлять собой список массивов объектов, каждый массив будет представлять строку, возвращаемую вашим запросом.

Docs

Когда вы затем попытаетесь скопировать этот список в свою "dest" String [], это завершится неудачно, потому что два типа несовместимы. т.е. вы пытаетесь вставить список объектов в массив строк.

Документы ArrayStoreException

Вам нужно проанализировать массив Object в вашем списке в массив строк.

  • 0
    «Вместо этого вам нужно разобрать массив объектов в вашем списке в массив строк». Как это сделать?
  • 0
    Не могли бы вы добавить строку для печати содержимого ваших результатов? Combined_table_List = get_combined_two_tables ("Mandar"); System.out.println (Arrays.toString (combined_table_List) .get (0));
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню