Можно получить эту информацию, как показано ниже, но я не уверен, что буду делать это в рабочем коде, если только мне не понадобятся переменные имена таблиц после компиляции кода. В противном случае, действительно ли это стоит затрат на читабельность вашего кода?
AbstractEntityPersister metadata =
(AbstractEntityPersister) sessionFactory.getClassMetadata(User.class);
String tableName = metadata.getTableName();
String[] columnNames = metadata.getKeyColumnNames();