Мне нужно получить список столбцов в таблице в порядке их появления. Возможно ли это с помощью Hibernate? У меня есть объект сеанса Hibernate, и я не против, могу ли я сделать это в самом Hibernate или с помощью JDBC.
База данных - MySQL, и эквивалентная команда SQL, которую я хочу выполнить:
"SHOW COLUMNS FROM " + tableName
Я попробовал следующее, и Hibernate пожаловался:
Table table = object.getClass().getAnnotation(Table.class);
String tableName = table.name();
session.beginTransaction();
// the following line causes an error
List columns = session.createSQLQuery("SHOW COLUMNS FROM " + tableName).list();
session.getTransaction().commit();
session.close();
Спасибо
- редактировать -
Мой окончательный рабочий код выглядит следующим образом.
/**
* @param Object object A Hibernate POJO
*/
private ArrayList<String> getColumns(Object object)
{
Table table = object.getClass().getAnnotation(Table.class);
String tableName = table.name();
Session session = this.sessionFactory.openSession();
Statement statement = null;
ResultSet resultSet = null;
ArrayList<String> columns = new ArrayList<String>();
String columnName;
Connection connection = session.connection();
try
{
statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
resultSet = statement.executeQuery("SHOW COLUMNS FROM " + tableName);
while (resultSet.next())
{
columnName = resultSet.getString("field");
columns.add(columnName);
}
}
catch (SQLException ex)
{
this.logger.fatal("getColumns: Unable to get column names", ex);
System.exit(1);
}
finally
{
session.close();
}
return columns;
}