JPA: как получить / напечатать строку запроса JPQL за (типизированным) запросом после задания параметров? - PullRequest
6 голосов
/ 10 октября 2011

Как получить / распечатать строку запроса JPQL за (типизированным) запросом, то есть после того, как были установлены параметры ?(например, в целях отладки)

Простой toString(), похоже, не работает ...

Спасибо

Ответы [ 3 ]

5 голосов
/ 11 октября 2011

Не существует такой вещи, как «конечный JPQL, который в конечном итоге переводится в конечный SQL».То, как реализация JPA генерирует SQL, зависит от него, и параметры в общем случае никогда не будут подставлены в какую-либо строку.SQL генерируется из деревьев выражений и т. Д., А не из строки.Если вы хотите вставить значения параметров, сделайте это сами, так как это имеет смысл только для вас

1 голос
/ 24 октября 2016

Я знаю, что это старый, но текущий ответ не совсем отвечает на исходный / корневой вопрос.

Я полагаю, что Каву искал, как выглядит строка JPQL, а не конвертируется ли она в SQL или нет.Желанием было найти конкретный параметр.

В любом случае, Каву, я искал одно и то же за один раз, потому что результаты моего запроса были искажены, и я не мог сказать, что это за параметр.Я обнаружил, что добавление приведенного ниже кода в файл persistence.xml помогло.Я использую EclipseLink, но я уверен, что другие реализации JPA имеют что-то вроде этого:

<property name="eclipselink.logging.level" value="FINE"/>

Это показано ниже в журналах вашего сервера:

[EL Fine]: sql: 2016-10-24 16:02:08.577--ServerSession(13483501)--Connection(6214343)--Thread(Thread[27010968@qtp-10395070-0,5,main])--SELECT ID, Name FROM Test WHERE (ID = ?)
    bind => [<your parameter shows here>]
0 голосов
/ 23 марта 2018

Для пользователей JBoss: внесите изменения в standalone.xml. В этом файле вы найдете раздел журнала под , например:

    <subsystem xmlns="urn:jboss:domain:logging:3.0">
        <console-handler name="CONSOLE">
            <level name="INFO"/>
            <formatter>
                <named-formatter name="COLOR-PATTERN"/>
            </formatter>
        </console-handler>
        <logger category="com.arjuna">
            <level name="WARN"/>
        </logger>
        <logger category="org.jboss.as.config">
            <level name="DEBUG"/>
        </logger>
        <logger category="sun.rmi">
            <level name="WARN"/>
        </logger>
        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="CONSOLE"/>
            </handlers>
        </root-logger>
        <formatter name="PATTERN">

Уровень по умолчанию - ИНФО. Чтобы отображались запросы и т. Д., Измените уровень на DEBUG в двух местах, например:

    <subsystem xmlns="urn:jboss:domain:logging:3.0">
        <console-handler name="CONSOLE">
            <level name="DEBUG"/>
            <formatter>
                <named-formatter name="COLOR-PATTERN"/>
            </formatter>
        </console-handler>
        <logger category="com.arjuna">
            <level name="WARN"/>
        </logger>
        <logger category="org.jboss.as.config">
            <level name="DEBUG"/>
        </logger>
        <logger category="sun.rmi">
            <level name="WARN"/>
        </logger>
        <root-logger>
            <level name="DEBUG"/>
            <handlers>
                <handler name="CONSOLE"/>
            </handlers>
        </root-logger>
        <formatter name="PATTERN">

Перезапустите JBoss, и теперь ваша консоль заполнена болтовней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...