Hibernate показать реальный SQL [дубликат]

Использование небезопасного нажатия:

class Filter<T extends Enum<T>> {
    private List<T> availableOptions = new ArrayList<T>();
    private T selectedOption;

    public Filter(T selectedOption) {
        Class<T> clazz = (Class<T>) selectedOption.getClass();
        for (T option : clazz.getEnumConstants()) {
            availableOptions.add(option);
        }
    }
}
377
задан Daniel Serodio 4 March 2013 в 22:08
поделиться

5 ответов

log4j.properties

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE

hibernate.cfg.xml

<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>

persistence.xml

Некоторые платформы используют persistence.xml:

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
228
ответ дан Dave Jarvis 4 March 2013 в 22:08
поделиться

select this_.code from true.employee this_ where this_.code=? - это , что будет отправлено в вашу базу данных.

this_ является псевдонимом для этого экземпляра таблицы employee.

5
ответ дан Stephen Denne 4 March 2013 в 22:08
поделиться

Стоит отметить, что код, который вы видите, отправляется в базу данных как есть, запросы отправляются отдельно для предотвращения внедрения SQL. AFAIK? метки являются заполнителями, которые заменяются числовыми параметрами в базе данных, а не в спящем режиме.

11
ответ дан gubby 4 March 2013 в 22:08
поделиться

Если вы уже можете видеть, что SQL печатается, это означает, что у вас есть код ниже в вашем hibernate.cfg.xml:

<property name="show_sql">true</property>

Чтобы напечатать также параметры связывания, добавьте следующее к вашему Файл log4j.properties:

log4j.logger.net.sf.hibernate.type=debug
15
ответ дан Brian Riehman 4 March 2013 в 22:08
поделиться

Могу ли я увидеть (...) реальный SQL

Если вы хотите увидеть SQL, отправленный непосредственно в базу данных (форматированный аналогично ваш пример), вам придется использовать какой-нибудь прокси-драйвер jdbc, например P6Spy (или log4jdbc ).

В качестве альтернативы вы можете включить ведение журнала следующих категорий (используя файл log4j.properties здесь):

log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE

Первая эквивалентна hibernate.show_sql=true, вторая печатает связанные параметры среди прочего.

Ссылка

355
ответ дан MegaMatt 4 March 2013 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: