Использование небезопасного нажатия:
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);
}
}
}
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
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
Некоторые платформы используют persistence.xml
:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
select this_.code from true.employee this_ where this_.code=?
- это , что будет отправлено в вашу базу данных.
this_
является псевдонимом для этого экземпляра таблицы employee
.
Стоит отметить, что код, который вы видите, отправляется в базу данных как есть, запросы отправляются отдельно для предотвращения внедрения SQL. AFAIK? метки являются заполнителями, которые заменяются числовыми параметрами в базе данных, а не в спящем режиме.
Если вы уже можете видеть, что SQL печатается, это означает, что у вас есть код ниже в вашем hibernate.cfg.xml:
<property name="show_sql">true</property>
Чтобы напечатать также параметры связывания, добавьте следующее к вашему Файл log4j.properties:
log4j.logger.net.sf.hibernate.type=debug
Могу ли я увидеть (...) реальный SQL
Если вы хотите увидеть SQL, отправленный непосредственно в базу данных (форматированный аналогично ваш пример), вам придется использовать какой-нибудь прокси-драйвер jdbc, например P6Spy (или log4jdbc ).
В качестве альтернативы вы можете включить ведение журнала следующих категорий (используя файл log4j.properties
здесь):
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
Первая эквивалентна hibernate.show_sql=true
, вторая печатает связанные параметры среди прочего.