Получение имени таблицы и / или имени столбца через QueryDSL?

#java #querydsl

#java #querydsl запрос #querydsl

Вопрос:

Есть ли какой-либо способ в QueryDSL получить имя таблицы и / или имя столбца для объекта из Q классов? Я просмотрел классы и ничего не могу найти навскидку, но я полагаю, что должен быть способ для QueryDSL узнать имена таблиц.

Комментарии:

1. Вы говорите о Querydsl JPA или SQL?

2. JPA QueryDSL. Извините, забыл, что существует такое различие.

3. может быть, вы ищете что-то подобное QMyTable.myAttribute.path.getMetadata().getName() ?

Ответ №1:

Querydsl не знает / не заботится об именах таблиц в Querydsl JPA. Он сериализует запросы в JPQL, где вместо таблиц и столбцов используются классы и свойства.

Если вам нужна модель SQL, вы можете вместо этого использовать Querydsl SQL или проверить метамодель JPA через JPA API.

Комментарии:

1. Любые предложения / рекомендации, где / как проверить метамодель JPA через JPA API? Я искал документацию по этому вопросу, но ничего не смог найти.

2. Вы получаете доступ к метамодели через EntityManager.getMetamodel: docs.oracle.com/javaee/6/api/javax/persistence /…

Ответ №2:

Слишком поздний ответ, но может помочь кому-то еще. Вы можете попробовать MetaDataExporter.

 java.sql.Connection conn = ...;
MetaDataExporter exporter = new MetaDataExporter();
exporter.setPackageName("com.myproject.mydomain");
exporter.setTargetFolder(new File("target/generated-sources/java"));
exporter.export(conn.getMetaData());