#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());