neo55
@neo55
junior

Как вывести названия столбцов из таблицы?

Необходимо вывести название столбцов из таблицы, создаю REST веб сервис, использую: Java, Maven, TomCat, MySql, Hibernate. Пока сделал так, но конечно же не работает, предполагаю нужен HQL запрос какой то или как.

personDao.java:
public List<Person> getHeaders() {
    List<Person> persons = null;
    Session session = null;

    try {
        session = sessionFactory.openSession();
        session.beginTransaction();
        persons = session.createQuery("SHOW FIELDS FROM person").list();
        session.getTransaction().commit();
    } catch (Exception ex) {
        if (session != null) {
            session.getTransaction().rollback();
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }
    return persons;
}


service.java:
@GET
@Path("/getHeaders")
@Produces(MediaType.APPLICATION_JSON)
public List<Person> getHeaders() {
    return personDao.getHeaders();
}


Для примера приложу код по выводу всех данных из таблицы, работает корректно:
public List<Person> getAllPersons() {
        List<Person> persons = null;
        Session session = null;

        try {
            session = sessionFactory.openSession();
            session.beginTransaction();
            persons = session.createQuery("from Person p").list();
            session.getTransaction().commit();
        } catch (Exception ex) {
            if (session != null) {
                session.getTransaction().rollback();
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
        return persons;
    }


@GET
    @Path("/getAllJSON")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Person> getAllPersonsInJSONroo() {
        return personDao.getAllPersons();
    }
  • Вопрос задан
  • 1859 просмотров
Решения вопроса 1
timych
@timych
Можно немного покритиковать?
Во первых - прикладывайте stack trace (Хотя я уверен что выскочил HibernateException).

Во вторых читайте Javadoc: Метод createQuery() - Create a new instance of Query for the given HQL query string.
В вашем рабочем примере вы как раз и используете HQL. А в нерабочем пытаетесь запихнуть SQL специфичный для MySql базы данных.
Если хотите использовать SQL, то наверное лучше использовать createSQLQuery().

В третьих , это все равно работать будет -потому что вы пытаетесь засунуть в Entity , который описывает таблицу, заголовки колонок, этой таблицы. Вы сами представляете как это возможно? Непонятно что вы хотите сделать, и для чего это нужно. Вы не знаете названия колонок в таблице? И на кой черт рест-клиенту их получать?

Но если уж так надо , то вот вроде рабочий пример: https://developer.jboss.org/thread/189593?start=0&...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы